docker swarm
クラスタから外部mongodb
サーバに接続できません。オーバーレイネットワークとは何ですか?また、DNS解決はどのように機能しますか?
これは、クラスタ使用のオーバーレイネットワークドライバのためです。私は正しい?
ドッカーオーバーレイドライバはどのように機能し、どのようにして外部サーバmongodb
に接続できますか?
docker swarm
クラスタから外部mongodb
サーバに接続できません。オーバーレイネットワークとは何ですか?また、DNS解決はどのように機能しますか?
これは、クラスタ使用のオーバーレイネットワークドライバのためです。私は正しい?
ドッカーオーバーレイドライバはどのように機能し、どのようにして外部サーバmongodb
に接続できますか?
Q.ドッキングオーバーレイドライバはどのように動作しますか?
これは、と述べている:
がドッカーが単一ドッカーエンジンとドッカースウォームで実行中のタスクで実行されているコンテナのサービス発見を提供するために、埋め込まれたDNSを使用しています。 Docker Engineには、ユーザー定義のブリッジ、オーバーレイ、およびMACVLANネットワーク内のホスト上のすべてのコンテナに名前解決を提供する内部DNSサーバーがあります。
各Dockerコンテナ(またはSwarmモードのタスク)には、DNS照会をDNSサーバーとして機能するDocker Engineに転送するDNSリゾルバがあります。
ので、このexempleセットアップでマルチホストdocker swarm mode
、中:この例では
myservice
と呼ばれる2つのコンテナのサービスがあります。同じネットワーク上に2番目のサービス(client
)が存在します。client
は、docker.comに対して2つのcurl
オペレーションを実行し、myservice
を実行します。
- DNSクエリは
docker.com
とmyservice
ためclient
によって開始されていますこれらは、結果のアクションです。
- コンテナのビルトインリゾルバは、
127.0.0.11:53
のDNSクエリをインターセプトし、Docker EngineのDNSサーバーに送信します。myservice
は、個々のタスクIPアドレスに内部的に負荷分散されているサービスの仮想IP(VIP)に解決されます。コンテナ名も解決されますが、直接IPアドレスにもなります。- 戻るあなたの質問に
docker.com
は、mynetネットワークにサービス名として存在しないため、要求はで、設定済みのデフォルトDNSサーバに転送されます。
:
はどのようにして、外部のMongoDBサーバフォームクラスタに接続することができますか?
外部mongodb
、あなたは確かにwan'tていないことを除いて、docker.com
に接続したい、上記のアーキテクチャのclient
と同じ状況にある(例えば、あなたが、そのmongodb.mydomain.com
のためのDNSを持っているとしましょう)そのウェブ全体にmongodb.mydomain.com
が公開されているので、内部のクラスタDNSサーバで宣言している可能性があります。
次に、この内部DNSサーバーを使用してmongodb.mydomain.com
を解決するようにドッカーエンジンに指示する方法はありますか。
あなたはそうのように、あなたがinternal DNS serverを使用したいあなたdocker service
タスクに指示する必要があります。ここに
docker service create \
--name myservice \
--network my-overlay-network \
--dns=10.0.0.2 \
myservice:latest
重要なのは--dns=10.0.0.2
です。これにより、dockerエンジンは、VIPサーバーのDNS名を解決できない場合、デフォルトで10.0.0.2:53
というDNSサーバーを使用するようになります。
、あなたが言う:
私は私のドッキングウィンドウの群れクラスタから外部のMongoDBサーバーに接続することはできません。私はこれがクラスタのためにオーバーレイネットワークドライバを使用していることを理解しています。私は正しい?
私はあなたがしたいDNSサーバにoverlay network
から来る未知のDNS名を転送するためにdocker engine
方法に建てがあるとして、ノーと言うでしょう。
希望すると便利です。