Dockerでコンテナが削除できなくなった


経緯

ローカル環境に使ってないコンテナとイメージが溜まってきたので掃除をしようとしたところエラーが起きたので備忘録として残しておきます。

やったこと

まず、VSCodeのプラグインからDockerのコンテナ、イメージを削除していたところ一つだけ削除が完了しないものがあったのでターミナルから調査をする必要が出てきました。

まずは、コンテナを確認してみます。

CONTAINER ID   IMAGE          COMMAND                  CREATED      STATUS      PORTS                               NAMES
cca3269a13aa   09361feeb475   "docker-entrypoint.s…"   3 days ago   Up 3 days   33060/tcp, 0.0.0.0:3308->3306/tcp   database

↑このdatabaseのコンテナが削除できなくなりました。

まずは稼働中になっているのでdocker stopをして停止を試みます。

$ docker stop cca3269a13aa

いくら待っても返答が返ってきません。仕方なくcommand + Cで処理を中止します。
次にコンテナを強制削除することを検討します。

$ docker rm --force cca3269a13aa
Error response from daemon: removal of container cca3269a13aa is already in progress

こちらもダメですね。。
「削除は進行中です」みたいなエラーが返ってきていますが、この処理が終わりそうな気配は全くないです。
プロセス周りでエラーしてるのかなということでMacを再起動します。(プロセスをkillして他のエラーに遭遇するのも嫌だったのでこうしています)
再起動後、再度プロセスを確認するとStatusがDeadに変わっています。

$ docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED      STATUS    PORTS                               NAMES
cca3269a13aa   09361feeb475   "docker-entrypoint.s…"   3 days ago   Dead      33060/tcp, 0.0.0.0:3308->3306/tcp   database

なんか、今なら削除できる気がします。

$ docker rm cca3269a13aa
cca3269a13aa

おぉ、無事削除することができました。

最後に

対応に慣れていればプロセスのkillでも対応できそうなので次同じことがあれば調べてみようと思います。

GUIで操作するのは、かなり楽をできますが何を実行してるか分からないのでなんか怖い、、、
どんなに便利になっても、基礎の学習は必要だなと感じました