web-dev-qa-db-ja.com

デフォルトではない一意のIPアドレスを持つようにDockerコンテナーを構成するにはどうすればよいですか?

デフォルトではない一意のIPアドレスを持つようにDockerコンテナーを構成するにはどうすればよいですか?

Dockerコンテナーは、ApacheまたはWebサービスを実行します。これらのDockerコンテナーは、1つの物理NICを持つ1つのホストを共有します。これらのコンテナは、ポート80を介した呼び出しで一意のIPアドレスによって識別可能である必要があります。ワークステーションはHTTPを使用してファイルをダウンロードします。

DockerホストでダミーのIPアドレスを作成してみました。しかし、これによりサーバーへのネットワークが切断されました。

Dockerオーバーレイをインストールしようとしましたが、ワークステーションがコンテナへのHTTPリクエストを使用できるようになるとは思いません。 Dockerオーバーレイは、コンテナー間の接続に向けられているようです。

インターロックの使用を検討しましたが、Swarmは使用しません。

5
Kiran

ここで最も簡単な解決策は、ホストにアドレスを追加してから、1つのコンテナを各アドレスにバインドすることです。たとえば、ホストが192.168.1.20であるとすると、次のようにアドレスを追加できます。

ip addr add 192.168.1.21/32 dev eth0
ip addr add 192.168.1.22/32 dev eth0
ip addr add 192.168.1.23/32 dev eth0

次に、コンテナーを開始するときに、コンテナーのポート80を特定のホストアドレスのポート80に次のように公開します。

docker run -p 192.168.1.21:80:80 mywebimage

(これはコンテナーのIPアドレスを変更しません。指定されたIPアドレスとポートとコンテナーの内部IPアドレスとポートの間のマップを作成します。)

ここに示すアドレス構成はnotになることに注意してください。ホストを再起動すると、アドレスが失われます。このようなアドレスを永続的に構成する方法は、配布ごとに異なります。詳細については、ディストリビューションのドキュメントを参照してください。

4
larsks