同じネットワーク内に、以下のホスト名と IP アドレス (動的 IP) を持つ 2 台のコンピューターがあります。
host1.local - 10.0.0.11
host2.local - 10.0.0.12
host1
デフォルト設定で Docker を実行しています。
のコンテナはIPアドレスを使用してhost1
に接続できますが、ホスト名を使用して接続できません。コンテナがホスト名を使用して直接接続する方法を教えてください。両方のサーバーはDHCPサーバーにあり、固定IPアドレスがないため、ファイルを構成することに注意してください。host2
10.0.0.12
host2
host2.local
hosts2
host1, host2
/etc/ホスト私の場合は機能しません。
答え1
Dockerコンテナは通常、デフォルトのブリッジネットワーク:
Docker を起動すると、デフォルトのブリッジ ネットワーク (ブリッジとも呼ばれます) が自動的に作成され、特に指定がない限り、新しく起動されたコンテナーはそれに接続します。
独自の DNS サービスを持つユーザー定義のブリッジを使用することもできます。
ユーザー定義のブリッジは、コンテナ間の自動 DNS 解決を提供します。
ユーザー定義のブリッジ ネットワークでは、コンテナーは名前またはエイリアスによって相互に解決できます。
コンテナ内のDNS解決を設定するための追加オプションがあります(ここ):
デフォルトでは、コンテナは構成ファイルで定義されているホストの DNS 設定を継承します
/etc/resolv.conf
。デフォルトのブリッジ ネットワークを使用するコンテナはこのファイルのコピーを取得しますが、カスタム ネットワークを使用するコンテナは Docker の組み込み DNS サーバーを使用し、外部 DNS ルックアップをホストで構成されている DNS サーバーに転送します。/etc/hosts で定義されたカスタム ホストは継承されません。追加のホストをコンテナーに渡すには、docker run リファレンス ドキュメントの「コンテナー ホスト ファイルへのエントリの追加」を参照してください。これらの設定はコンテナーごとに上書きできます。
そしてコンテナホストファイルにエントリを追加する言う:
/etc/hosts
1 つ以上のフラグを使用して、コンテナのファイルに他のホストを追加できます--add-host
。この例では、docker という名前のホストの静的アドレスを追加します。$ docker run --add-host=docker:93.184.216.34 --rm -it alpine
もちろん、上流の DNS サーバーを適切に解決するように構成することもできます*.local
。そのために mDNS を使用する場合は、上流の DNS サーバーがそれを使用できる必要があります。