docker compose(docker-compose)で特定のコンテナだけ再起動・停止する方法

docker compose(docker-compose)で特定のコンテナだけ再起動・停止する方法をまとめます。
結論:特定コンテナだけ再起動するコマンド
# docker compose(新表記) docker compose restart サービス名 # docker-compose(旧表記) docker-compose restart サービス名
サービス名 は docker-compose.yaml(または compose.yaml)で定義したサービス名を指定する。コンテナ名ではないので注意。
サービス名とコンテナ名の違い
ここで詰まる人が多い。
docker-compose.yaml で以下のように定義されているとき:
services: web: image: nginx db: image: postgres
- サービス名:
web、db(yaml で定義した名前) - コンテナ名:
myapp_web_1、myapp_db_1(Docker が自動で付ける名前)
docker compose restart に渡すのはサービス名。コンテナ名を指定しても動かない。
自分もコンテナ名を指定して全然再起動しなくてしばらくはまりました。
特定コンテナだけ停止する
# 特定コンテナだけ停止 docker compose stop サービス名 # 特定コンテナだけ起動 docker compose start サービス名 # 停止 → 起動を一発で(再起動) docker compose restart サービス名
実行中のサービス名を確認する
docker compose ps
NAME や SERVICE 列に表示されるのがサービス名。
まとめ
| やりたいこと | コマンド |
|---|---|
| 特定コンテナを再起動 | docker compose restart サービス名 |
| 特定コンテナを停止 | docker compose stop サービス名 |
| 特定コンテナを起動 | docker compose start サービス名 |
| サービス名を確認 | docker compose ps |
サービス名はコンテナ名ではなく compose.yaml に書いた名前。これを間違えるとコマンドが何も言わずにスルーされるので注意。
