動かざることバグの如し

近づきたいよ 君の理想に

UbuntuでDockerを完全初期化する方法

環境

  • Ubuntu

やりたいこと

Dockerの調子が悪いので完全初期化したい。生半可な削除ではむしろ環境が壊れてしまったので完全削除対応メモ。

手順

Dockerを停止する。 docker.socket を止めないとsocket activationでdockerdが勝手に起き上がってくるので、両方止める。

$ sudo systemctl stop docker.socket docker containerd

remove ではなく purge で削除

$ sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

イメージ・コンテナ・ボリュームを削除する。パッケージを消してもこのディレクトリは残るので必ず削除する。

$ sudo rm -rf /var/lib/docker
$ sudo rm -rf /var/lib/containerd

daemon.json の記述ミスで起動しない、みたいなケースはここを消さないと直らない。ユーザーごとの ~/.docker にもログイン情報やcontextの設定が残っているので一緒に消す。

$ sudo rm -rf /etc/docker
$ sudo rm -rf /etc/systemd/system/docker.service.d
$ sudo rm -rf /var/lib/docker-engine
$ rm -rf ~/.docker
$ sudo systemctl daemon-reload

dockerグループを削除する。グループを消すと usermod -aG docker $USER をやり直すことになるが、GIDがズレたまま残っているのが原因のパーミッションエラーもあるので、完全初期化を謳うなら消す。

$ sudo groupdel docker