概要

Creators Updateによって、Bash on Ubuntu on Windows (BoW) へ chroot を使ってUbuntuのコンテナを作成できるようになりました。ここでは、その手順を説明します。

※この記事の内容は、過去のエントリ(Bash on Ubuntu on Windowsのchrootを試してみた - くんすとの備忘録)の一部を切り出し一部修正を加えたものです

セットアップ手順

手順は1~5まであります。

1. 必要なパッケージのインストール

1
# apt install debootstrap

2. debootstrapを使ったUbuntu環境のダウンロード

違いがわかりやすいように、XenialではなくVividを入れます。

1
# debootstrap vivid /srv/chroot/vivid http://ftp.riken.go.jp/Linux/ubuntu/

3. resolv.confのコピー

1
# cp -L /etc/resolv.conf /srv/chroot/vivid/etc

4. デバイスのマウント

bashの全ての窓を閉じると設定し直しになるので注意

1
2
3
4
# cd /srv/chroot
# mount -t proc none vivid/proc
# mount -t sysfs none vivid/sys
# mount -o bind /dev vivid/dev

5. ログイン

1
# chroot /srv/chroot/vivid /bin/bash

確認・検証

uname

コンテナの外側

1
2
# uname -a
# cat /etc/lsb-release

コンテナの内側

1
2
# uname -a
# cat /etc/lsb-release

ということで、Ubuntu(Vivid)のコンテナ環境が作成されたことがわかります。

アプリケーションを入れてみる

リポジトリの追加

1
2
# sed -i.BK 's/$/ restricted universe multiverse/' /etc/apt/sources.list
# apt update

Gitのインストール

1
# apt install git

軽く動作検証

1
git clone https://github.com/vuejs/vue.git

OK

Rubyのインストール

1
# apt install ruby

軽く動作検証

1
# ruby -e 'open("/etc/lsb-release").readlines.collect{|l| puts l.downcase}'

OK

Node.jsのインストール

1
# apt install nodejs

軽く動作検証

1
2
3
# nodejs -e 'var fs = require("fs"); fs.readFile("/etc/lsb-release", "utf8", function(err, text) { 
  console.log(text.toLowerCase())
})'

参考URL