は、私は、次のかなり基本的に取得しようとしていますブリッジネットワーク内のホスト名を自動発見:ドッカーネットワーキング:ドッカー1.9使用して動作するようにセットアップネットワーキング(またはそう思った)
- 私は実行し、複数の容器を持っていますサービス、例えば
postgres
コンテナとpython
コンテナ(2つ以上存在する可能性があります)。 - これらのコンテナは、
bridge
ネットワークを介して相互に接続されています。 - 一意のホスト名を使用してアドレス指定できるようにしたい(つまり、PythonコンテナがPostgresコンテナにpingするために
ping postgres
を実行できるはずです)。
チュートリアル(https://docs.docker.com/engine/userguide/networking/dockernetworks/が)、私はこれを達成するために次の一連のコマンドを使用することができ、次のとおりです。
#create the containers
docker run -itd --name container1 busybox
docker run -itd --name container2 busybox
#create the network
docker network create test
docker network connect test container1
docker network connect test container2
これは非常にうまく機能し、ドッカーが正しく、正しいIPを指すようにetc/hosts
のエントリを設定し、アドレス。ただし、そのセットアップの複数のインスタンス(コンテナ+ネットワーク)を同時に実行できるようにしたいと考えています。これは、/etc/hosts
ファイル内の各コンテナのエントリがの名前と等しく、一意である必要があるため動作しません。 hostname
パラメータを指定しても、この問題は解決されません。これは、コンテナのホスト名(つまり、自身が認識するホスト名)のローカルのみを変更するためです。
私は、コンテナでDNSサービスを実行していることに頼らずにこれを行う方法に非常に興味があります。これは簡単な問題ですが、残念ながら/etc/hosts
ファイルのコンテナ名を変更するための設定オプションが見つかりませんでした。
私はホスト名がコンテナにホスト名を動的に渡す必要がないように(例えば、PythonコンテナにPostgresコンテナのアドレスを伝えるために)ネットワーク+コンテナ設定のすべてのインスタンスでホスト名を同じにしたい)
EDIT:私は、ドッカーの課題追跡にいくつかの研究を行なったし、パイプラインで、このための機能があるように思われる:https://github.com/docker/libnetwork/issues/737
これは非常に重要な質問です。['--link:alias'](https://docs.docker.com/v1.8/reference/run/#env-environment-variables) "Legacy links"(http://docs.docker.com/engine/userguide/networking/dockernetworks/#legacy-links))では、2つのコンテナ(同じドッカーデーモンによって管理される)間の "エイリアス"を定義することができました。そのエイリアスは別の 'docker run'によって再利用され、各エイリアスはエイリアス化されたリンクされたコンテナ(同じエイリアスを持つ)を見ることができます。私は新しいlibnetworkで同じ機能を見つけられませんでした。 –
VonC
はい私はこれについても読んで、1.9で同様の機能を見つけることができませんでした – ThePhysicist