我正在Windows的Docker上运行Windows容器。我的docker-compose.yml
看起来像这样:
version: '2.4'
services:
web:
image: microsoft/aspnet
platform: windows
networks:
webnet:
ipv4_address: 172.0.0.2
ports:
- "4119:80"
expose:
- "80"
dns:
- 8.8.8.8
- 8.8.4.4
networks:
webnet:
name: "custom_network"
ipam:
config:
- subnet: 172.0.0.0/16
gateway: 172.0.0.1
当我连接PowerShell并运行ping 8.8.8.8
时,ping正常。但是,当我运行ping域名时,会得到以下结果:
PS C:\> ping google.com
Ping request could not find host google.com. Please check the name and try again.
对于任何其他IP /域来说都是一样的。
因此,我的容器可以访问Internet,但是无法解析域名。
解决方法是,我尝试将预填充的hosts
文件注入容器,然后按该文件中的域ping正常。它可以正确解析IP地址并接收来自远程计算机的答复。
我想念什么?我应该如何配置Docker容器来解决此问题?
更新: 我的PC上具有以下Docker版本:
> docker version
Client: Docker Engine - Community
Version: 19.03.2
API version: 1.40
Go version: go1.12.8
Git commit: 6a30dfc
Built: Thu Aug 29 05:26:49 2019
OS/Arch: windows/amd64
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 19.03.2
API version: 1.40 (minimum version 1.24)
Go version: go1.12.8
Git commit: 6a30dfc
Built: Thu Aug 29 05:39:49 2019
OS/Arch: windows/amd64
Experimental: true
> docker-compose version
docker-compose version 1.24.1, build 4667896b
docker-py version: 3.7.3
CPython version: 3.6.8
OpenSSL version: OpenSSL 1.0.2q 20 Nov 2018
答案 0 :(得分:0)
对于每个Here,如果通过CLI创建docker网络,则应该可以简单地设置:-o com.docker.network.windowsshim.dnsservers=<DNS SERVER/S>
。
如果通过docker-compose文件执行此操作,请参见this answer,该建议
dns:
- 8.8.8.8
- 4.4.4.4
- 192.168.9.45
或在Windows的VM本身中对其进行设置。