最近Docker触ってるのでメモがてらハマりポイントをまとめます。
現象
コンテナが立たない。最初はdocker run -d してるのにdocker psにでてなくておや?と思いました。docker run -itしてみてもやっぱり立ち上がりません。
原因
容量不足。
解決法1
コンテナおよびイメージを削除する。
イメージを削除するにはそのイメージのコンテナを削除しなければならず、コンテナを削除するにはまずコンテナを停止しなければいけません。ということで
コンテナ停止->コンテナ削除->イメージ削除の順で行います。
# コンテナのIDを確認
$ docker ps
# 停止
$ docker stop ${CONTAINERID}
$ docker rm ${CONTAINERID}
$ docker rmi ${IMAGEID}
選ばず全部削除、みたいにするには以下
[追記]コメントより追記しました。ありがとうございます。
# コンテナ削除
$ docker rm $(docker ps -q -a)
# イメージ削除
$ docker images | grep -v REPOSITORY | awk '{print $3;}' | xargs docker rmi
解決法2
1やったのにコンテナもイメージも全部削除したのにディスク容量が変わらない。。。
調べてみるとカーネルのバグで一部OSではだめなようです。
https://github.com/docker/docker/issues/3182
今回はCentOS6.5でこれにひっかかりました。
どうにもなんないので、容量食ってるディスクを消します。ターゲットは/var/lib/docker.
ただしこの場合コンテナすべて削除してしまいますので、RepositoryにCommitしとくなりDockerfileにすべて記述しておいて再度Buildできるようにしておくことが必要です。
/etc/init.d/docker stop
rm -rf /var/lib/docker
/etc/init.d/docker start
まとめ
Dockerは容量不足でコンテナが立たなくなる。Dockerのコンテナが容量を食ってる場合があるので、イメージ/コンテナを削除する。
一部OSでそれでも容量が回復しない場合、直接/var/lib/docker以下を削除する。