今回はDockerでよく分からない不具合が出た場合に、僕がとりあえず試していることについてまとめたので紹介したいと思います。色々試行錯誤したけどどうにもならないといった場合はぜひ試してみてください。
とりあえず試していることリスト
- コンテナの再起動
- キャッシュを使用しないビルド
- コンテナの削除
- コンテナの最新化
- <none>:<none>なイメージの削除
- Dockerイメージをクリーンに
- Docker for Macの再起動
- PCの再起動
イメージを先に削除してもどのコンテナに紐づいているイメージか分からないので、「まずはコンテナ削除、その後イメージ削除」という順番を意識するようにしましょう。
コンテナの再起動
「コンテナは起動しているけど、何か変な現象起きてる」といった場合は、とりあえずコンテナを再起動してみます。
% docker-compose up
キャッシュを使用しないビルド
次に試すことはキャッシュを使用しないビルド。Dockerfileを更新した場合など、イメージの構築にキャッシュを使用したくない場合に用いるコマンドです。
% docker-compose build --no-cache
コンテナの削除
これでもダメならコンテナを一度削除してみましょう。
% docker rm `docker ps -a -q`
上記コマンドはコンテナを一括で削除するコマンドです。
もし全て削除したくない場合は「% docker ps -a」で停止しているコンテナを表示し「% docker rm 削除したいコンテナID」で削除しましょう。
例), % docker rm efnwdjkfwf823
// 複数指定も可能
例), docker rm eea5bsds02 52008asdfqd
コンテナの最新化
削除しても変わらなければ、コンテナの最新化を行います。(個人的によくやります)
% docker-compose stop
% docker-compose rm --force
% docker-compose build
% docker images | awk '/<none/{print $3}' | xargs docker rmi
% docker-compose up
<none>:<none>なイメージの削除
続いて試すことは<none>:<none>なイメージです。ビルドを複数回行うと、<none>:<none>なイメージが生成され容量を圧迫してしまうため、それらをとりあえずクリーンにします。
% docker images
% docker images | awk '/<none/{print $3}' | xargs docker rmi
参考: Dockerに<none>:<none>なイメージが生まれてくる理由
Dockerイメージをクリーンに
<none>:<none>なイメージを削除しても変わらなければ、イメージ全てをクリーンにします。イメージはそれに紐づく中間ファイルの削除も行わなければならないため、-fオプションが必要な点に注意しましょう。
% docker images
% docker rmi -f イメージID
例), docker rmi -f cdc2ab81113
Docker for Macの再起動
Docker for Macを使用している方のみですが、Docker for Macの再起動も有効な手段です。僕もこれで何度か救われたことがあります。

PCの再起動
最終手段のPC再起動。これでダメなら誰かにヘルプ出しましょう。
試していることまとめ
- コンテナの再起動
- キャッシュを使用しないビルド
- コンテナの削除
- コンテナの最新化
- <none>:<none>なイメージの削除
- Dockerイメージをクリーンに
- Docker for Macの再起動
- PCの再起動
参考
今回はDockerでよく分からない不具合が出た場合に、僕がとりあえず試していることについて紹介しました。他にもこんなの試しているよ!といった意見があればぜひコメントお願いします。