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

# 発生した現象
`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 stop`や`docker-compose rm`で普通に停止や削除ができていたのに、なぜ急にできなくなってしまったのだろう…