docker
docker-compose
WindowsSubsystemForLinux
WSL

Windows Subsystem for LinuxでDockerを動かす

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.

参考