docker

Dockerメモその1 -コンテナが立たない-

More than 3 years have passed since last update.

最近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以下を削除する。