このページで解説している内容は、以下の 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.yaml
code 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表示内容
Apachehttp://localhostApacheのトップページが表示されます。
nginxhttp://localhost:8080nginxのトップページが表示されます。

Apacheコンテナへの接続

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

nginxコンテナへの接続

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

これで、両方のコンテナが問題なく動作していることが確認できました✨

まとめ

今回のエラーは、「コンテナ名の重複」によるものでした。

ポイントをまとめると👇

  1. コンテナ名は一意である必要がある。
  2. 同じ名前を使うとComposeがエラーを出す。
  3. container_nameを個別に設定して解決できる。

エラーメッセージをよく見ると、原因がしっかり書かれています。
焦らずに一つずつ確認していけば、Dockerのエラーも怖くありませんよ😊

これで「コンテナ名の重複エラー」もバッチリ解決です!
名前をユニークにするだけで、Docker Composeがスムーズに動くようになりますよ👍