dockerでは、2つのコンテナが同じポートを共有する方法はありますか?
Dockerでは、1つのポートは1つのコンテナにしか割り当てられないため、2つのコンテナが同じポートを共有することはできません。同じポートを使用する必要がある場合は、1つのコンテナを他のコンテナのポートにマッピングするか、Dockerのネットワークモードを使用してコンテナ間の通信を実現することができます。
以下是两种実装方法です。
- ポートマッピング:1つのコンテナのポートを別のコンテナのポートにマッピングすることができます。たとえば、コンテナAがポート8080を使用する必要があり、コンテナBもポート8080を使用する必要がある場合、コンテナAのポートをホストマシンの1つのポート(たとえば8081)にマッピングし、それからコンテナBはホストマシンのポート8081を使用することができます。
docker run -d -p 8081:8080 containerA
docker run -d -p 8080:8080 containerB
- Dockerネットワークの使用:カスタムネットワークを作成し、2つのコンテナを同じネットワークに配置することで、コンテナ間でコンテナ名やIPアドレスを使用して通信できるようになります。例えば、ネットワークを作成してコンテナAとコンテナBをそのネットワークに追加します。
docker network create mynetwork
docker run -d --name containerA --network mynetwork containerA
docker run -d --name containerB --network mynetwork containerB
コンテナAとコンテナBは、コンテナ名を使用してお互いに通信できるようになりますが、同じポートを共有する必要はありません。