LoginSignup
168
129

More than 5 years have passed since last update.

Dockerでコンテナの停止・削除ができなくなった時の対処法

Last updated at Posted at 2017-08-03

発生した現象

docker-compose up -dで起動したコンテナ群を停止しようとしたとき、docker-compose stopとし、docker-compose psで停止を確認したところ、

      Name                    Command             State           Ports
--------------------------------------------------------------------------------
test_apache-php_1   apache2-foreground            Up      0.0.0.0:80->80/tcp
test_mysql_1        docker-entrypoint.sh mysqld   Up      3306/tcp
test_phpmyadmin_1   /run.sh                       Up      0.0.0.0:8080->8080/tcp

なぜか起動したまま。

docker-compose kill

とか、

docker stop $(docker ps -a -q) 
docker rm $(docker ps -a -q) 

で、全コンテナ削除を試みるも、

Error response from daemon: You cannot remove a running container 6456e178b6b19a51592d92eb4c8a266f03718a21bc80674731ea23da331fa331. Stop the container before attempting removal or force remove
Error response from daemon: You cannot remove a running container 5c0985c779d9653597cf16804c4d8234691019ca6d277d668234c4e47b14880e. Stop the container before attempting removal or force remove
Error response from daemon: You cannot remove a running container 1710ee4fb30e9c5df3193dd37c3aa66bccbdd56ec9fcba2d7e6449a00b84d90c. Stop the container before attempting removal or force remove

というエラーが表示される。

対処法

force removeとか表示されているため、強制削除すればいいのかなと思い、docker psでコンテナIDを調べ、

docker rm --force <コンテナID>

を、起動しているコンテナ分実行。
docker psでコンテナの状態を確認すると、

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

で、全部削除された。

新たな問題

しかし、全部削除されたところで再びdocker-compose up -dでコンテナ群を起動しようとしたところコンテナ起動の途中で、

Creating test_mysql_1
ERROR: endpoint with name test_mysql_1 already exists in network bridge

となりdocker-compose up -dが中断する。

対処法

エラーメッセージの通りに、ネットワークについて調べる。

docker network inspect bridge

としたところ、

"Containers": {
            "1710ee4fb30e9c5df3193dd37c3aa66bccbdd56ec9fcba2d7e6449a00b84d90c": {
                "Name": "test_mysql_1",
                "EndpointID": "aed78298261a7179a8e9d7af26a242640b7789b7285f38c2b0ec58147ebbb4e2",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            },
            "5c0985c779d9653597cf16804c4d8234691019ca6d277d668234c4e47b14880e": {
                "Name": "test_apache-php_1",
                "EndpointID": "4820bbc930e44e3855e4dc9dcc94d86b3dbd8d75d89814e2e8671e8cf35d6c71",
                "MacAddress": "02:42:ac:11:00:03",
                "IPv4Address": "172.17.0.3/16",
                "IPv6Address": ""
            },
            "6456e178b6b19a51592d92eb4c8a266f03718a21bc80674731ea23da331fa331": {
                "Name": "test_phpmyadmin_1",
                "EndpointID": "d3f48e94593024dde9220d06a1bc3c0a9cdafedeab9438340e0077984a5cc36c",
                "MacAddress": "02:42:ac:11:00:04",
                "IPv4Address": "172.17.0.4/16",
                "IPv6Address": ""
            }
        },

これらが残っていたため、新しく同じ名前のコンテナが起動できなかったのかな。

docker network disconnect -f <ネットワーク名> <コンテナ名>

のようにすればよいので、今回だと、

docker network disconnect -f bridge test_mysql_1
docker network disconnect -f bridge test_apache-php_1
docker network disconnect -f bridge test_phpmyadmin_1

とする。

docker-compose up -dとすると、うまくコンテナ群が起動してくれました。

追記

@gc373 様のコメントを参考に、

sudo service docker restart

としたところ、コンテナが停止し、再びdocker-compose up -dとしてもうまくコンテナが起動しました。

所感

今までdocker-compose up -dで起動したコンテナはdocker-compose stopdocker-compose rmで普通に停止や削除ができていたのに、なぜ急にできなくなってしまったのだろう…

168
129
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
168
129