mzumi's blog

Docker for Mac でコンテナが起動しなくなった時の対処

June 09, 2017

普段、Rails で開発しているシステムは、

のミドルウェアを使用している。
ローカルで開発している時は、上記を直接 Mac にインストールするのではなく、docker-compose を利用して、Docker上で動作させている。

ところが先日、突然 docker-compose を起動させた時、下記のエラーメッセージが
表示されるようになり、mysql が起動しなくなった。

ERROR: for mysql  driver failed programming external connectivity on
endpoint mysql_1
(b16748bdc569801393dd72f82ec8270a379afe237417d1325dc16242caa419bc):
Bind for 0.0.0.0:3306 failed: port is already allocated

とりあえず、Docker for Mac を再起動したが、改善されず。。
調べてみると、Docker でコンテナがゾンビ化し、port を占有してしまっているようだ。

そこで、Docker の動いているホストに ssh ログインしようとしたが、方法が見つからず。。。
しかし、調べていくと、同様の症状になった方がいるようなので、それを参考に
下記を実行し、ホストに接続。

$ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

その後、root でログインし、

# docker rm `docker ps -qa`
# rm /var/lib/docker/network/files/local-kv.db

を実行後、docker を再起動したところ無事、解決。