无法在Windows 10上解析docker-compose服务主机名

时间:2019-07-16 17:41:10

标签: docker docker-compose

错误报告信息

说明

无法从Windows 10上的容器内ping docker-compose服务。 ping该服务的IP地址有效。

重现此问题的步骤:

1使用以下内容创建docker-compose-quick-servers.yml

--typescript

2运行docker容器:docker-compose -f。\ docker-compose-quick-servers.yml up -d

3 ping其他docker-compose服务:docker exec Server_1 ping server2

描述您收到的结果: ping失败。使用第二个服务IP地址的相同操作可以正常工作。

描述您期望的结果: 我们应该能够使用其定义的名称ping服务。

您认为重要的其他信息(例如,问题偶尔发生): 在我们的产品环境中(在Windows Server 2016上),它可以正常工作。

npm run eject的输出:

version: '3.4'
services:
    server1:
        image: mcr.microsoft.com/windows/nanoserver
        container_name: Server_1
        entrypoint: ping -t localhost
      server2:
        image: mcr.microsoft.com/windows/nanoserver
        container_name: Server_2
        entrypoint: ping -t localhost
    networks:
      default:
        external:
          name: nat

docker version的输出:

Client: Docker Engine - Community
 Version:           18.09.2
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        6247962
 Built:             Sun Feb 10 04:12:31 2019
 OS/Arch:           windows/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.2
  API version:      1.39 (minimum version 1.24)
  Go version:       go1.10.6
  Git commit:       6247962
  Built:            Sun Feb 10 04:28:48 2019
  OS/Arch:          windows/amd64
  Experimental:     false

docker检查两个容器 容器1

docker info

容器2

Containers: 2
 Running: 2
 Paused: 0
 Stopped: 0
Images: 9
Server Version: 18.09.2
Storage Driver: windowsfilter
 Windows:
Logging Driver: json-file
Plugins:
 Volume: local
 Network: ics l2bridge l2tunnel nat null overlay transparent
 Log: awslogs etwlogs fluentd gelf json-file local logentries splunk syslog
Swarm: inactive
Default Isolation: hyperv
Kernel Version: 10.0 17134 (17134.1.amd64fre.rs4_release.180410-1804)
Operating System: Windows 10 Enterprise Version 1803 (OS Build 17134.706)
OSType: windows
Architecture: x86_64
CPUs: 8
Total Memory: 15.93GiB
Name: H198818
ID: HOKO:5CAS:SIQ2:SCLD:3TB7:A6GG:EH5X:763G:CBV5:UQMJ:BGSO:PF2Y
Docker Root Dir: E:\ProgramData\Docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: -1
 Goroutines: 36
 System Time: 2019-04-18T15:33:25.7898496-04:00
 EventsListeners: 1
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false
Product License: Community Engine

1 个答案:

答案 0 :(得分:0)

不建议将Docker CE用于Windows Server。使用Docker EE Basic,Windows Servers免费。

更新: 总的来说,您的配置看起来不错...设置了别名,但是从ping输出中,我看到这不是ping问题,而是dns解析。第二个容器使用某些外部dns来解析server1,而不是使用docker内部dns。

有一个类似的错误报告涉及Windows容器的docker dns解析:https://github.com/docker/for-win/issues/1976

可能是您的情况。

作为临时解决方案,我建议您将容器中的dns解析器设置为127.0.0.11https://docs.docker.com/v17.09/engine/userguide/networking/configure-dns/)上的默认docker dns