Dockerは、ローカルネットワーク上の他のホストと通信するためにホスト名をどのように使用しますか?

Dockerは、ローカルネットワーク上の他のホストと通信するためにホスト名をどのように使用しますか?

同じネットワークに2台のコンピュータがあり、ホスト名とIPアドレス(動的IP)は次のとおりです。

host1.local - 10.0.0.11
host2.local - 10.0.0.12

host1Dockerがデフォルト設定で実行されています。

のコンテナはIPアドレスを使用して接続host1できますが、ホスト名は使用できません。誰もがコンテナが使用されているホスト名に直接接続する方法を教えてもらえますか?両方のサーバーがDHCPサーバーにあり、静的IPアドレスがないため、構成ファイルhost210.0.0.12host2host2.localhosts2host1, host2/etc/ホスト私の場合は動作しません。

答え1

Dockerコンテナは通常、次の場所にあります。基本ブリッジネットワーク:

Dockerが起動すると、デフォルトのブリッジネットワーク(ブリッジとも呼ばれます)が自動的に作成され、特に指定しない限り、新しく起動されたコンテナはこのネットワークに接続されます。

独自のDNSサービスを使用してカスタムブリッジを持つこともできます。

カスタムブリッジは、コンテナ間の自動DNS解決を提供します。

カスタムブリッジネットワークでは、コンテナは名前またはエイリアスで互いに確認できます。

コンテナでDNS解決を設定する他のオプションがあります(参照:ここ):

デフォルトでは、コンテナは/etc/resolv.conf構成ファイルで定義されているホストのDNS設定を継承します。デフォルトのブリッジネットワークを使用するコンテナはこのファイルのコピーを取得しますが、カスタムネットワークを使用するコンテナは、外部のDNSルックアップをホストに設定されたDNSサーバーに転送するDockerの組み込みDNSサーバーを使用します。

/ etc / hostsで定義されているカスタムホストは継承されません。追加のホストをコンテナに渡すには、docker run リファレンス ドキュメントの「コンテナのホスト ファイルにアイテムを追加する」を参照してください。コンテナごとにこれらの設定を上書きできます。

そしてコンテナホストファイルにエントリを追加する説明する:

/etc/hosts1つ以上のフラグを使用して、コンテナファイルに追加のホストを追加できます--add-host。この例では、dockerという名前のホストの固定アドレスを追加します。

$ docker run --add-host=docker:93.184.216.34 --rm -it alpine

もちろん、アップストリームDNSサーバーを設定して正しく確認することもできます*.local。この目的のためにmDNSを使用している場合は、アップストリームDNSサーバーでそれを使用できる必要があります。

関連情報