web-dev-qa-db-ja.com

ポートマッピングなしで、DockerコンテナのIPとポートを外部のdockerホストに公開する方法

1つのdockerホストで同じWebイメージの2つのdockerコンテナーを開始したとき。

  • 2つのdockerコンテナが同じポートでリッスンしました5000
  • 2つのコンテナのポート5000は、Dockerホストの異なるポートにマップされました:4915549156
  • 外部のドッカーホストから2つのコンテナにアクセスするには、ドッカーホストのIPとポート49155または49156にアクセスする必要があります

ポートマッピングなしで、IPとポートx.x.x.x:5000を使用して、外部のdockerホストからdockerコンテナーにアクセスするソリューションはありますか?

異なるドックホスト上のすべてのドッカーコンテナは、互いに直接アクセスできます。

44
kino lucky

ホストでIPエイリアスを使用してこれを実現できます。

最初に、プライマリインターフェイスとは異なるIPアドレスを持つホストに仮想インターフェイスを追加します。プライマリインターフェイスを呼び出しますeth0 IP付き10.0.0.10、および仮想インターフェイスeth0:1 IPアドレス付き10.0.0.11

 ifconfig eth0:1 10.0.0.11 netmask 255.255.255.0 up 

ここで、コンテナを実行し、ポート5000を対応するインターフェイスにマップします。例えば:

docker run -p 10.0.0.10:5000:5000 -name container1 <someimage> <somecommand>
docker run -p 10.0.0.11:5000:5000 -name container2 <someimage> <somecommand>

これで、外部から異なるIPアドレスを使用して、ポート5000で各コンテナーにアクセスできます。

63
Ben Whaley