参考 URL
- “Windows Subsystem for Linuxとは? そのインストールと使い方 - Build Insider”
- “Docker for Windowsで快適な環境を得るまでの そこそこ長い闘い - Qiita”
Win10 で Windows Subsystem for Linux
-
「Windows 10 Fall Creators Update」の更新を充てる
-
管理者モードでPowerShellウィンドウを起動して以下のコマンドを実行する(実行後、再起動が要求されると解説されていたがされなかった)
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
-
「Microsoft Store」から "Windows Subsystem for linux" で検索してディストリビューションを見つける
-
ディストリビューションを「入手」でインストールする
-
この 「Ubuntu」を起動すると実際の WSL へのインストールが行われ、Ubuntu のプロンプトウィンドウが起動する
注意点
どうも「Windows 10 Fall Creators Update」をインストールすると、MS 謹製の sshd がインストールされ勝手に(Windows のサービスとして)起動する状態になる様なので注意。
殺しておかないと、VirtualBox や WSL 側の sshd に入れないのでハマる。
デフォルトでパスワード認証設定の様なのでセキュリティー的にも好ましくない。
Docker
Docker for Windows のインストール方法は省略する。
Ubuntu への Docker のインストール方法は公式のインストール方法を参照。
現時点では参考URL “Docker for Windowsで快適な環境を得るまでの そこそこ長い闘い - Qiita” の「Bash on WindowsでDockerのインストール」の内容と同じ。
古い Docker がインストール済みの場合削除しておく必要があるので注意
準備
apt
パッケージインデックスの更新
$ sudo apt-get update
apt
が HTTPS を通してパッケージをインストール出来るようにする
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
Docker の公式 GPG キーを追加する
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
GPG キーの目視ベリファイ(DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
)
$ sudo apt-key fingerprint 0EBFCD88
pub 4096R/0EBFCD88 2017-02-22
Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid Docker Release (CE deb) <docker@docker.com>
sub 4096R/F273FCD8 2017-02-22
Docker の apt-get リポジトリを stable
リポジトリとしてセットアップする
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
Docker CE のインストール
apt
のパッケージインデックスを更新する。( Docker の apt リポジトリをセットしたので)
$ sudo apt-get update
インストール
$ sudo apt-get install docker-ce
バージョンを指定する場合は以下のコマンドで利用可能なバージョンを確認して
$ apt-cache madison docker-ce
バージョン指定インストール
$ sudo apt-get install docker-ce=<VERSION>
Hellow World テスト
$ sudo docker run hello-world
→ この段階では動かない
Docker for Windows との協調設定
以下二項の設定を行う事により、 WSL 側 Docker クライアントが Win 側の Docker engine を使用する様になってくれる模様。
Ubuntu on WSL
~/.bashrc
に以下を書き込んでおく
export DOCKER_HOST='tcp://0.0.0.0:2375'
Docker for Windows の設定
- 「Settings」 の 「General」 で「Expose daemon on tcp://localhost:2375 without TLS」にチェックする
- 「Shared Drives」で WSL にマウントするボリュームをチェックする
パーミッションの問題
WSL + Ubuntu では自動的に C
ドライブを /mnt/c
にマウントしてくれる。
※ etc/fstab
などに記述されているわけではないので VirtualBox の自動マウントのような仕組みと思われる。
/mnt/c の制約
- パーミッション・オーナーが root:root の 0777
- パーミッション変更不可
Virtual Box + Ubuntu のボリュームマウントの制約と同じで意味が無い
じゃあどうするか
によれば普通に mount コマンドでマウントできると書かれているので、任意のディレクトリを任意のパーミッションでマウントできるかやってみる。
$ sudo mount -t drvfs -o uid=tettekete,gid=tettekete C:\Users\tettekete\wsl_share /mnt/wsl_share
mount: wrong fs type, bad option, bad superblock on C:\Users\tettekete\wsl_share,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so.
→ ディレクトリをマウントすることはできない(ドライブ単位でしか出来ない模様)
samba という選択
Win 側ディレクトリを好きなパーミッションでマウントできないなら WSL 側ディレクトリを共有すればいいじゃない、
と Samba の中の人も考えたらしい。
が、これ以上のキメラ環境は精神衛生上好ましくないのでおとなしく Docker for mac を使った方が良い気がする。