Edited at

WSL(Debian GNU/Linux)にdockerを入れた


WSL(Debian GNU/Linux)にdockerを入れた


1. はじめに

Docker Desktopをインストールして立ち上げてみたのだが、私の自宅の貧弱スペックPCは『カクカクフリーズ状態』に陥り、とてもそれを立ち上げながら作業する気持ちになれなかったので、WSLにインストールする事にした。


2. 環境

Windows10の環境

Windows 10 Pro Insider Preview

評価コピー。Build 18875.rs_prerelease.190405-1518

WSL(Debian GNU/Linux)の環境


xxxxxx@xxxxxxxxxxxxxx:~$ cat /etc/debian_version
9.7
xxxxxx@xxxxxxxxxxxxxx:~$ cat /etc/issue
Debian GNU/Linux 9 \n \l


3. インストール作業


3.1. つまづき

こちらのページのとおりに作業を進めて行けば、インストールそのものは簡単に終わる。ページからコマンドをコピー&ペーストでサクサクと進めれば良いだろう。

https://docs.docker.com/install/linux/docker-ce/debian/#install-docker-ce

しかし、その方法でインストールされる、最新バージョンのDockerでは、

Dockerのサービス起動には成功するのだが、次の段階のコンテナ起動で、

以下のようなエラーを吐いて、どうしても動かない。


xxxxxx@xxxxxxxxxxxxxx:~$ docker start 209ebb8f7e26
Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "process_linux.go:297: getting the final child's pid from pipe caused \"EOF\"": unknown
Error: failed to start containers: 209ebb8f7e26

調査を進めて行くと、WSLがdockerの新機能に対応していない事が原因で、通信が不調なのだから、dockerをダウングレードせよとの事だった。ネット上の情報はubuntuが多くdebianが少ない。また、WSLの記事となるとさらに少なくて、英語で書かれたubuntuやmacosの記事をWSL(debian GNU/Linux)用に読み替える事に、一番時間がかかった。


3.2. 再インストール(ダウングレード)

あまり関係ないかもしれないが、Windowsの管理者モードで起動した方がよさそう。

ターミナルを閉じて、再度立ち上げる。

20190430_2.png

マニュアルに記載のあるとおり、以下のコマンドで、docker-ceを削除する。


sudo apt-get purge docker-ce


sudo rm -rf /var/lib/docker

以下のコマンドでdocker-ceのバージョンを指定してインストールする。

(17.03.3~ce-0~debian-stretchをインストールしたら上手く行きました)

sudo apt-get install docker-ce=17.03.3~ce-0~debian-stretch

ここからが重要なのだが、公式のマニュアルには書かれておらず、暫くハマったのだが、以下のとおりコマンドを順次投入してやると、起動する。

sudo cgroupfs-mount

sudo usermod -aG docker $USER
sudo service docker start

cgroupfs-mountは特殊なセキュリティの仕掛けとの事。このコマンドを投入しないとdockerのサービスは起動しない。

以下のとおりDockerの起動が確認された。

xxxxxx@xxxxxxxxxxxxxx:~$ sudo service docker status

[sudo] password for kazuki:
[ ok ] Docker is running.

コンテナを実行する。

sudo docker run hello-world

コンテナの実行結果が表示された。

20190430.png


4. まとめ

最初からdocker-ceをダウングレードしてインストールすれば良いとする情報があれば良かったと思うので、今回は投稿させていただきました。WSLが更新されれば最新のdockerにも対応するようになるかもしれませんし、先の事はわかりませんが、備忘録的に纏めさせていただきます。

・ debianの情報は少ないのでubuntuの方が調査はやりやすい。

・ Windowsの管理者モードでターミナルを立ち上げること。

・ Dockerの起動コマンドはマニュアルに記載が無い。cgroupfs-mountを実行する必要がある。

・ docker-ceは17.03.3~ce-0~debian-stretchにダウングレードする。

https://qiita.com/forest1/items/ab6d8b345653c614229b こちらも参考になります。