tl;dr
- Windows Subsystem for Linux (以後 WSL) にDockerを入れようとしたらめちゃめちゃ詰まった
- 本来WSL上でDockerを使用するなら
Ubuntu 16.04
を使用するべきらしい - WSLが最新のDockerには対応していない模様。
- インストールが完了しても
Is the docker daemon running?
と永遠に怒られた
環境
- Windows 10 Pro
- Windows Subsystem for Linux (Ubuntu 18.04)
インストール手順
まずはパッケージ関連を更新しておく
$ sudo apt-get update
HTTPS経由でrepositoryをやりとり出来るようにするためのパッケージをインストール
$ sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
Dockerの公式GPG keyを追加する
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo apt-key add -
repository( stable ) を追加する
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
bionic \
stable"
再度 apt パッケージのアップデート
$ sudo apt-get update
docker-ce(17.09.0)のdebファイルをダウンロードします
$ wget https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/docker-ce_17.09.0~ce-0~ubuntu_amd64.deb
Dockerのインストール
$ sudo dpkg -i docker-ce_17.09.0~ce-0~ubuntu_amd64.deb
Userの設定。ログインユーザをdocker group に所属させることにより、dockerコマンドを sudo 無しで実行を出来るように
$ sudo cgroupfs-mount
$ sudo usermod -aG docker $USER
Dockerを立ち上げる
ターミナルソフトを管理者権限で動作させないと正常に動きません
↑で大いに時間を消費しました。
当方は管理者権限で動作させていなかった為、
start
しても下記出力に悩まされました。
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
systemctl は WSLでは動作しないため、serviceコマンドで開始します。
$ sudo service docker start
正常に開始されたことを確認します
$ sudo service docker status
* Docker is running
hello-world
コンテナを建ててみる
$ docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
.
.
.
For more examples and ideas, visit:
https://docs.docker.com/get-started/
正常に動きました。
おまけ
DockerのProxy周りの環境変数は下記フォルダに書くとよい
export http_proxy='http://your.proxy.com:yourPort'
export https_proxy='${http_proxy}'
まとめ
- WSLはDockerの最新版に対応してないのでバージョン指定して導入する
- 管理者でターミナルソフトを立ち上げないと正常に動かない
参考