2

を実行する docker コンテナーを実行する CoreOS インスタンスがありますdnsmasq。現在、dnsmasq構成はすべてのクエリをログに記録し、デバッグ モードで実行するように設定されているため、キャッシュのみを実行する必要があります。

dignslookup、または単に実行している別のコンテナからこれを使用しようとすると、ping google.com戻っBad hostname: google.comてきて、ログクエリで、再試行されているかのように、リクエストが複数回送信されていることがわかります。

CoreOS を実行しているホスト マシンから同じコマンドを実行しようとすると、1 回の試行ですべての問題が解決されません。

私の計画はdnsmasq、クラスタ内の各 CoreOS マシンでを実行しconfd、それを でサポートすることで、すべてのサービスが適切な相手を解決できるようにすることです。

基本イメージに Alpine Linux を使用していますが、これらのコマンドを Ubuntu と Debian イメージ内で実行しようとしましたが、結果は同じでした。

4

1 に答える 1

0

正しいことは、次のスレッド ( Setting Up Docker Dnsmasq )にありました。

ポートを公開するときは、ホストの IP アドレス (この場合は内部) に明示的にバインドする必要があります。

コンテナの呼び出しは次のようになります。

source /etc/environment
docker run -d --cap-add NET_ADMIN \
    -p "$COREOS_PRIVATE_IPV4:53:53" \
    -p "$COREOS_PRIVATE_IPV4:53:53/udp" \
    -e COREOS_PRIVATE_IPV4="$COREOS_PRIVATE_IPV4"\
    someorg/dnsmasq

次に、get で実行されたすべてのコンテナーが、--dns "$COREOS_PRIVATE_IPV4"マシンレベルの dnsmasq を介して正しく解決されます。

于 2016-03-30T02:41:54.850 に答える