Windows Subsystem for LinuxではDockerコンテナを実行することができないので、 Docker for Windowsに接続する方法と、注意点についてのまとめ。
Docker for Windowsのインストールと設定
Docker for Windowsをインストールするためには、Windows 10 ProでHyper-Vを有効にしている必要がある。その上で、以下からインストールする。
インストールが完了したら、Dockerの設定画面を開き、Generalの’Expose daemon on tcp://localhost:2375 without TLS’をチェックする。
WSLの有効化
WSLを有効にするために、Windows 10の64ビット版で、Fall Creators Updateを適用している必要がある。 その上で、管理者モードのPowerShellで以下を実行する。
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
WSLでのDockerのインストールと設定
Get Docker CE for Ubuntuに従って、Docker CEをインストールする。daemonもインストールされるが動作しない。
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce
次に、.bashrcに以下を追加する。
export DOCKER_HOST=tcp://localhost:2375
これが有効になると、WSLのdockerコマンドで、Docker for Windowsで稼働するコンテナを操作できる。
$ sudo docker run hello-world
Dockerコンテナの操作の注意点
Windows上のフォルダをコンテナにマウントするときは、まずDocker for Windowsの設定画面を開き、Shared Drivesからマウントするドライブをチェックする。
その上で、WSLのDdockerコマンドの-vオプションで以下のように/c/…とか/d/…とホスト側のパスを指定する。
docker run -it --rm -v /d//blog/pelican/blog.strawhat.net:/home/pelican registry.gitlab.com/.../pelican-docker make html
WSLでは/mntにドライブがマウントされているが、コンテナにマウントされるフォルダのパスを解釈するのはWindows上のDockerなので、あくまでWindowsから見えるパスを/で区切った形式で指定する必要がある。