猫でもわかるWeb開発・プログラミング

本業エンジニアリングマネージャー。副業Webエンジニア。Web開発のヒントや、副業、日常生活のことを書きます。

docker-compose down で down しなくなったコンテナを down させる

f:id:yoshiki_utakata:20191224195335p:plain

docker-compose up -d した状態でうっかり docker-compose.yml を編集したりすると、 docker-compose down しても down せずに残ってしまう事がある。

Creating network "lumenspeed_default" with the default driver
Creating lumenspeed_app_1 ... error

ERROR: for lumenspeed_app_1  Cannot start service app: driver failed programming external connectivity on endpoint lumenspeed_app_1: Bind for 0.0.0.0:8088 failed: port is already allocated

この場合は docker-compose down でコンテナが終了されていないので、ポートがぶつかって新しく docker-compose up -d できなくなっている。

docker ps すると生き残っているのがわかる。

$ docker ps
CONTAINER ID        IMAGE                        COMMAND                 CREATED             STATUS              PORTS                                            NAMES
6e44cb76d7ca        phpearth/php:7.3-litespeed   "/sbin/runit-wrapper"   About an hour ago   Up About an hour    0.0.0.0:7080->7080/tcp, 0.0.0.0:8088->8088/tcp   lumen-lightspeed_app_1

つまり、普通に docker を終了させる方法でやればいい。

$ docker kill 6e44cb76d7ca
6e44cb76d7ca

これで起動できる

$ docker-compose up -d
Starting lumenspeed_app_1 ... done