docker-compose up できなくなった
docker-compose stopをしたら下記のようなエラーに遭遇した
$ docker-compose stop
Stopping docker_nginx_1 ...
Stopping docker_php_1 ...
Stopping docker_php_1 ... error
Stopping docker_redis_1 ... error
ERROR: for docker_nginx_1 UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=70)
Traceback (most recent call last):
File "<string>", line 3, in <module>
File "compose/cli/main.py", line 61, in main
File "compose/cli/main.py", line 113, in perform_command
File "contextlib.py", line 35, in __exit__
File "compose/cli/errors.py", line 56, in handle_connection_errors
TypeError: log_timeout_error() takes exactly 1 argument (0 given)
docker-compose returned -1
# docker-compose ps
しても、同じエラー...
解決までの流れ
netstat -untap でdockerのportの状態を調べる。
# netstat -untap
root 1497 0.0 0.0 0 0 ? Z 06:31 0:00 [docker-proxy] <defunct>
root 1520 0.0 0.0 0 0 ? Z 06:31 0:00 [docker-proxy] <defunct>
root 1529 0.0 0.0 0 0 ? Z 06:31 0:00 [docker-proxy] <defunct>
なんかいる。。。
おそらく通常は
# netstat -untap
tcp6 0 0 :::80 :::* LISTEN 25238/docker-proxy
tcp6 0 0 :::443 :::* LISTEN 25230/docker-proxy
こんな感じでコンテナのポートと紐付いている(と思っている)。
docker-stopしたのに port80や443などと紐付いていたであろうdocker-proxyが残ってた場合は下に続く。
(そうじゃない場合は、下記対応では解決できないかもしれないです)
# ps -aux | grep docker
で、docker-proxyがコンテナに紐付かず、stopしたのに残っているプロセスがないか探す。
ゾンビ化してるプロセスがあったら、そいつの親となっているプロセスをkill
する。
その後
# docker-compose up -d
すれば、解決!
まだまだdockerにはなれず、つまるところが多い、、
そもそもこんなことにならないように、設定しておけるところとかあるのだろうか?