Debian Stretch に Docker を再インストール

Debian Stretch に Docker を再インストール

Debian を Wheezy -> Jessie(testing) -> Stretch とアップグレードしているうちに Docker が動かなくなっていたのを直した。 あまり関係ないと思うが、kernel は Jessie の 3.16.0 を使っており、厳密には Stretch とは環境が異なる。

$ uname -a
Linux t440s 3.16.0-4-amd64 #1 SMP Debian 3.16.51-2 (2017-12-03) x86_64 GNU/Linux

Docker のページに書いてある Debain の apt-line を入れても公開鍵の認証に失敗して amd64 のパッケージを取得できない。 仕方ないのでパッケージを直接インストールする。

https://docs.docker.com/engine/installation/linux/docker-ce/debian/

$ wget https://download.docker.com/linux/debian/dists/stretch/pool/stable/amd64/docker-ce_17.09.1~ce-0~debian_amd64.deb
$ sudo dpkg -i docker-ce_17.09.1~ce-0~debian_amd64.deb

インストールプロセスの最後で systemd による dockerd の起動に失敗する。これはDocker 用の設定がないからなので作成する。 ここを参考にした。 https://forums.docker.com/t/failed-to-start-docker-application-container-engine/35594

$ sudo sh -c 'mkdir /etc/systemd/system/docker.service.d'
$ sudo sh -c 'touch /etc/systemd/system/docker.service.d/hosts.conf'
$ sudo cat /etc/systemd/system/docker.service.d/hosts.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2736

systemctl status docker.service しても /var/lib/docker/ の permission がうんたらと怒られる。 よくわからないが、strace しても /var/lib/docker/ への何かで失敗している。

$ ls -al /var/lib/ | grep docker
drwx--x--x 12 root       root         136 12月 10 01:45 docker

/var/lib/docker/ には以前のバージョンで使用していたファイルが残っているので削除して作り直す。 ディレクトリ内に aufs のマウントポイントがあるので umount してから。

$ sudo umount /var/lib/docker/aufs
$ sudo rm -rf /var/lib/docker
$ sudo mkdir /var/lib/docker

ここで再度 Docker をインストールする。

$ sudo dpkg -i docker-ce_17.09.1~ce-0~debian_amd64.deb

今度は完了した。

$ docker run  -p8080:80 -d  nginx:latest
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
bc95e04b23c0: Pull complete
f3186e650f4e: Pull complete
9ac7d6621708: Pull complete
Digest: sha256:b81f317384d7388708a498555c28a7cce778a8f291d90021208b3eba3fe74887
Status: Downloaded newer image for nginx:latest
fb632e455394eeee49c15179fc0dd77daf0933ffb5dcf938ee2bcfde7d6eaa5d
$ w3m http://localhost:8080

ずっと気になっていたのですっきりした。 Jupyter Notebook とか ROS2 とか Redash など、Docker 上でいろいろ試していきたい。