1

Docker Windows Containers으로 작업하고 있습니다. 응용 프로그램을 실행중인 Docker 컨테이너 하나 이상으로 이동하고 싶습니다. 헤드 라인 "도커 작성 및 서비스 검색" 아래 Microsoft docs에 설명 된대로 : 도커에 내장서비스 검색을위한 Docker DNS가 이름으로 Windows 컨테이너의 주소를 확인하는 작업이 일관되게 작동하지 않습니다.

는 IP (DNS) 용기 및 서비스에 대한 매핑 서비스 등록 및 이름을 처리하는 서비스 검색,이다; 서비스 검색을 사용하는 경우 모든 컨테이너 끝 점이 에 대해 이름 (컨테이너 이름 또는 서비스 이름)으로 서로 검색 할 수 있습니다. 이 이름으로

그리고 docker-compose가 키우면의 YAML 파일에 당신 define services 수 있기 때문에,이 검색 가능해야한다 (예를 들어, ping이)합니다 (difference between services and containers in docker-compose을 상기해야합니다). 이 blog post by Microsoftwebdb 서비스가 포함 된 완전한 예를 제공하며, 전체 소스는 필요한 경우 docker-compose.yml in the GitHub repo입니다.

내 문제는 다음과 같습니다 도커 창 용기는 때때로 서로 "를 찾아"않으며, 때로는 전혀. 나는 docker inspect <container-id>으로 그걸 확인했고, 별칭은 dbweb입니다. 그러나 하나의 컨테이너 (예 : docker exec -it myapps_web_1 powershell을 통해 하나의 웹 컨테이너로)에 넣고 시도 할 때 ping db이 경우에만 가끔씩 만 작동합니다.

그리고 여기서 (IMHO 문서가 없기 때문에) 여기에 나와 있습니다.이 문제는 non docker-compose 시나리오에서도 마찬가지입니다. example app without compose을 빌드하면이 문제는 도커 작성 서비스가 없어도 나타납니다.

이상한 행동에 대한 아이디어가 있으십니까? 나를 위해이 시나리오는 더 많은 앱이 출현함에 따라 악화됩니다. 자세한 내용은 https://github.com/jonashackt/spring-cloud-netflix-docker을 살펴 봄 봄. & Spring Cloud Eureka/Zuul 및 weatherbackend 및 weatherbackend-second가 쉽게 확장 가능한 4 개의 도커 작성 서비스가있는 예제 프로젝트가 있습니다. docker compose scale weatherbackend=3을 통해

Windows Vagrant boxpacker.io을 통해 빌드되며 최신 Windows Server 2016 Evalutation ISO을 기반으로합니다. 필요한 Windows 기능 및 도커/도커는 is done with Ansible 설치를 작성합니다.

이 문제에 대한 수정 프로그램이 없으면 Docker Windows Containers는 대부분 고객이 사용할 수 없게됩니다.

답변

1

이 문제를 해결하기 위해 1, 2 주일이 지난 후에 마침내 해결책을 찾았습니다.퍼팅

윈도우 DNS 클라이언트 불확실성에 대한 임시 해결 방법

docker/for-win/issues/500의 읽기 시작으로, 나는 그것을 이름, 저자 중 하나가 부업으로 솔루션을 문서화이 multicontainer example application source에 대한 링크를 발견 하여 DNS 문제를 해결됩니다 Dockerfile (들)에 다음

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

(파워 쉘의 실행이 Dockerfiles 작업 내에서 명령을 어떻게 배울로 좀보고)

또한 문제는 discussed here이며 해결책은 공식 Docker 이미지 (또는 적어도 문서)에있는 방법을 찾을 수 있기를 바랍니다.

+0

이렇게해도 문제가 해결되지 않습니다. 나는 이미 그 레지스트리 값이 설정되어있는 최신 Windows 서버 컨테이너를 실행하고 있는데, DNS가 변경된 후에 잘못된 IP를 해결한다는 것을 알게된다. 다른 해결책이 있습니까? –

+0

설정에 대해 더 자세히 설명해 주시겠습니까? Docker Compose를 사용 하시겠습니까? '도커 검사 컨테이너'의 결과는 무엇입니까? 내 블로그 게시물 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 (승 10)에서 문제를 해결했지만 제 업무용 노트북은 별칭으로 서비스를 전혀 해결하지 않습니다. 나는 instanceID를 얻을 수 있습니다. 내 노트북이 어떻게 구성되어 있는지 추측하고 있습니다. 누군가는 문제가 내 컴퓨터보다는 오히려 도커 일 가능성이 높다는 이유로 아이디어를 얻었습니다. –