このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Docker超入門:よくあるエラーと解決策③|コンテナ名の重複エラーの原因と対処法

よくあるエラーと解決策③|コンテナ名の重複エラーの原因と対処法
Docker Composeで複数のコンテナを定義しているとき、
「同じコンテナ名を設定してしまってエラーになった…」という経験はありませんか?
実は、コンテナ名は一意(ユニーク)でなければならないというルールがあります。
ここでは、Apacheコンテナとnginxコンテナを例に、
「コンテナ名の重複エラー」が出たときの原因と解決方法をわかりやすく解説していきます。
作業前のクリーンアップ
まずは、Dockerの中をスッキリさせておきましょう。
古いコンテナやイメージが残っていると、今回の検証に影響してしまうことがあります。
次のコマンドを実行して、使っていないDockerオブジェクトを削除します👇
docker system prune -a --volumesこのコマンドはDockerの“お掃除コマンド”です。
いらないコンテナ、イメージ、ネットワーク、ボリュームをまとめて削除してくれます。
| オプション | 内容 |
|---|---|
| -a | 未使用のイメージをすべて削除します。 |
| --volumes | 使われていないボリュームも削除します。 |
実行結果
PS C:\Users\joeac\Desktop\docker\error1> docker system prune -a --volumes
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all anonymous volumes not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N] y💡もしコマンド操作が不安な場合は、Docker DesktopのGUIで削除するのもOKです。
クリックで確認しながら削除できるので安心です。
作業用ディレクトリの作成
次に、作業用のフォルダを準備します。
PowerShellで以下のコマンドを順番に実行します👇
cd desktop/docker
mkdir error3
cd error3これで「C:\Users\ユーザー名\Desktop\docker\error3」というフォルダができあがります。
ここに今回のcompose.yamlファイルを置いて作業します。
実行結果
PS C:\Users\joeac> cd desktop/docker
PS C:\Users\joeac\Desktop\docker> mkdir error3
Directory: C:\Users\joeac\Desktop\docker
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2025/10/25 16:19 error3
PS C:\Users\joeac\Desktop\docker> cd error3
PS C:\Users\joeac\Desktop\docker\error3>compose.yamlファイルの作成
VSCodeを起動して、次のコマンドを入力します。
code compose.yamlcode compose.yaml
VSCodeが開いたら、以下の内容を入力して保存します。
services:
apache:
image: httpd:latest
container_name: web_container
ports:
- "80:80"
nginx:
image: nginx:latest
container_name: web_container
ports:
- "8080:80"一見、問題なさそうに見えますが…
実はここで、**両方のコンテナに同じ名前「web_container」**が設定されています。
コンテナを起動してみよう
それではこのまま起動してみましょう。
docker compose up -d少し待つと、次のようなエラーメッセージが表示されます👇
services.apache: container name "web_container" is already in use by service {}"
日本語にすると、
「services.apache: コンテナ名「web_container」は既にサービス {} によって使用されています」
という意味です。
つまり、コンテナ名が重複しているため、Composeが正しくコンテナを作成できなかったということですね。
コンテナ名の重複とは?
Dockerでは、同じ名前のコンテナを2つ以上同時に存在させることはできません。
コンテナ名はDockerの内部で一意に識別される必要があるため、
重複していると「どちらのコンテナか区別できない」状態になります。

エラーの修正方法
解決方法はとても簡単です!
それぞれのサービスに異なるコンテナ名を設定してあげましょう。
修正版のcompose.yamlは次のようになります👇
services:
apache:
image: httpd:latest
container_name: web_container1
ports:
- "80:80"
nginx:
image: nginx:latest
container_name: web_container2
ports:
- "8080:80"Apacheとnginxに別々のコンテナ名をつけることで、エラーを防ぐことができます。
修正後に再起動!
修正ができたら、もう一度コンテナを起動してみましょう。
docker compose up -d出力結果が以下のようになれば成功です🎉
PS C:\Users\joeac\Desktop\docker\error3> docker compose up -d
[+] Running 14/14
(省略)
[+] Running 3/3
✔ Network error3_default Created 0.1s
✔ Container web_container2 Started 1.1s
✔ Container web_container1 Started 1.0s
PS C:\Users\joeac\Desktop\docker\error3>これで両方のコンテナが無事に起動しました!
コンテナの確認
それぞれのコンテナにブラウザからアクセスしてみましょう。
| コンテナ | URL | 表示内容 |
|---|---|---|
| Apache | http://localhost | Apacheのトップページが表示されます。 |
| nginx | http://localhost:8080 | nginxのトップページが表示されます。 |
Apacheコンテナへの接続
WebブラウザのURLに「localhost」と入力します。
ApacheコンテナのTOPページが表示されます。

nginxコンテナへの接続
WebブラウザのURLに「localhost:8080」と入力します。
nginxコンテナのTOPページが表示されます。

これで、両方のコンテナが問題なく動作していることが確認できました✨
まとめ
今回のエラーは、「コンテナ名の重複」によるものでした。
ポイントをまとめると👇
- コンテナ名は一意である必要がある。
- 同じ名前を使うとComposeがエラーを出す。
- container_nameを個別に設定して解決できる。
エラーメッセージをよく見ると、原因がしっかり書かれています。
焦らずに一つずつ確認していけば、Dockerのエラーも怖くありませんよ😊
これで「コンテナ名の重複エラー」もバッチリ解決です!
名前をユニークにするだけで、Docker Composeがスムーズに動くようになりますよ👍
