Windows Subsystem for LinuxではDockerコンテナを実行することができないので、 Docker for Windowsに接続する方法と、注意点についてのまとめ。

Docker for Windowsのインストールと設定

Docker for Windowsをインストールするためには、Windows 10 ProでHyper-Vを有効にしている必要がある。その上で、以下からインストールする。

Install Docker for Windows

インストールが完了したら、Dockerの設定画面を開き、Generalの'Expose daemon on tcp://localhost:2375 without TLS'をチェックする。

2017-12-10_23-34-51.png

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からマウントするドライブをチェックする。

2017-12-10_23-35-29.png

その上で、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から見えるパスを/で区切った形式で指定する必要がある。



Comments

comments powered by Disqus