1

私はアプリケーションを実行している唯一のドッカーコンテナを超えて行きたいDocker Windows Containersでの作業動作しない名前でWindowsのContainer'sアドレスを解決します。見出し「ドッカー構成し、サービスの検出」Microsoft docsで説明したように:ドッカーに組み込まれドッカーDNSは一貫

は、IP(DNS)のコンテナとサービスのマッピングへのサービス 登録と名前を扱うサービス発見、です。 サービス発見では、すべてのコンテナのエンドポイントが に名前(コンテナ名またはサービス名)で互いに発見できる可能性があります。そこに名前で

そしてdocker-composeがit'sのYAMLファイルであなたdefine servicesすることができますので、これらが検出可能でなければなりません(例えばping可能)(difference between services and containers in docker-composeを思い出させるようにしてください)。このblog post by Microsoftは、webdbというサービスの完全な例を提供しています。フルソースには、必要な場合はdocker-compose.yml in the GitHub repoが含まれています。

私の問題は、次のとおりです。ドッカー窓コンテナのみ、時にはお互いを「見つける」か、時には全く。私はdocker inspect <container-id>でそれらをチェックし、別名dbwebが存在します。しかし、私は一つの容器(例えばdocker exec -it myapps_web_1 powershellを介して1つのWebコンテナ内)にPowerShellとたまにしかping dbこの作品だけをしようとするとき。

そして(ドキュメントではない私見ので)私はここで明確にしましょう:この問題は、ドッキングウィンドウ、作曲以外のシナリオでも同じです。 example app without composeを構築すると、問題はdocker-composeサービスなしでも表示されますが、単純な古いコンテナ名になります。

その奇妙な行動上の任意のアイデア?私にとってこのシナリオは、より多くのアプリが利用されるにつれて悪化します。詳細は、https://github.com/jonashackt/spring-cloud-netflix-dockerをご覧ください。ここでは、Spring Boot & Spring Cloud Eureka/Zuulと4つのドッカー作成サービスのサンプルプロジェクトがあります。天気予報と天気予報秒は簡単にスケーラブルです。 via docker compose scale weatherbackend=3

私のWindows Vagrant boxは、packer.ioでビルドされ、最新のWindows Server 2016 Evalutation ISOに基づいています。必要なWindowsの機能とドッカー/ドッカーの作成のインストールis done with Ansible。この問題の修正を持たない

は、ドッカーWindowsのコンテナは、お客様に私たちのために主に使用できなくなります。

答えて

1

この問題を解決しようとして1〜2週間後、私は最終的に解決策を見つけました。

WindowsのDNSクライアントおかしな置く

のための一時的な回避策:このdocker/for-win/issues/500の読み込みに始まり、私は著者の一人がそれを命名、副業として解決策を文書化し、このmulticontainer example application sourceへのリンクを見つけましたあなたのDockerfile(複数可)に次は、DNSの問題を解決します:

SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';"] 
RUN set-itemproperty -path 'HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters' -Name ServerPriorityTimeLimit -Value 0 -Type DWord 

(PowerShellのの実行がDockerfilesワーク内でコマンド方法を学ぶために、に見て)

また、問題はdiscussed hereであり、解決策は正式なDockerイメージ(または少なくともドキュメント)の中にあるとうまくいきます。

+0

これは私の問題を解決しません。私はすでにそのレジストリ値が設定されている最新のWindowsサーバーコンテナを実行していますが、変更後にDNSが間違ったIPに解決されることがあります。他の解決策はありますか? –

+0

セットアップについての詳細を教えてください。 Docker Composeを使用しますか? 「ドッカー検査コンテナID」の出力は何ですか?私は私のブログ投稿の完全な例を完成させましたhttps://blog.codecentric.de/en/2017/05/ansible-docker-windows-containers-scaling-spring-cloud-netflix-docker-compose/ここに:https ://github.com/jonashackt/ansible-windows-docker-springboot - あなたのエラーを示すサンプルプロジェクトをセットアップするのにも役立つかもしれませんか? – jonashackt

+0

これは私の家庭用PC(Win 10)の問題を解決しましたが、仕事用ラップトップはエイリアスによってサービスを解決しません。 instanceIDで取得できます。私は自分のラップトップがどのように構成されているかを推測しています。誰もが、問題がドッカーではなく私のPCである可能性が高いので、どこから始めればいいか分かりません。 –