WSL上でのDocker動作については既に多くの記事がありますが、2018年9月30日時点で改めて動作検証やコミュニティへの投稿をチェックして、情報を整理しました。
動作検証環境
- Windows 10 Pro (April 2018 Update)
- Ubuntu 18.04 (Windows Subsystem for Linux)
まとめ
- 最新版 のdocker-ce(公式パッケージ)は動作しないため、17.09を利用する必要がある。
- docker-composeはWSL上でiptablesが完全にサポートされていないため動作しない。
Dockerインストール・起動方法
- Ubuntu 18.04 を起動して、以下のコマンドを実行する。
# WSLの標準コンソールでは貼り付けが上手くできないため、一度ファイルに出力する。
cat <<EOF > ./install-docker.sh
#!/bin/bash
# 古いパッケージをアンインストールする。
apt-get remove -y docker docker-engine docker.io
apt-get update
# docker-ceの依存パッケージをインストールする。
apt install libltdl7 -y
curl -O https://download.docker.com/linux/debian/dists/stretch/pool/stable/amd64/docker-ce_17.09.0~ce-0~debian_amd64.deb
dpkg -i docker-ce_17.09.0\~ce-0\~debian_amd64.deb
# sudoなしでdockerを実行できるようにする。
usermod -aG docker $USER
EOF
sudo sh ./install-docker.sh
- 一度Ubuntuアプリケーション(ウィンドウ)を閉じる。
- Ubuntuアプリケーションを管理者として実行してDockerサービスを起動する。(サービス起動時にはUbuntuアプリケーションをWindows管理者権限で実行する必要がある。)
sudo service docker start
- Dockerサービスが正常に動作しているか確認する。
docker run hello-world
docker composeの動作検証
- Ubuntu 18.04 を起動して、以下のコマンドを実行する。
# 最新の安定版をダウンロード
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > ./docker-compose
chmod u+x ./docker-compose
# テスト用のdocker-componse.yamlを作成する
cat <<EOF > ./docker-componse.yaml
version: '2'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
redis:
image: redis
EOF
# doCker-composeを実行する
./docker-compose up
- 現時点ではiptablesでこけてエラーとなる。
ERROR: Failed to Setup IP tables: Unable to enable NAT rule: (iptables failed: iptables --wait -t nat -I POSTROUTING -s 172.18.0.0/16 ! -o br-8838cdb48d77 -j MASQUERADE: iptables: Invalid argument. Run `dmesg' for more information.