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の管理者モードで起動した方がよさそう。
ターミナルを閉じて、再度立ち上げる。
マニュアルに記載のあるとおり、以下のコマンドで、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
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 こちらも参考になります。