我创建了一个Docker version 17.03.1-ce
由一名经理和 2 名工人组成的 docker swarm ( )。所有 swarm 节点都可以“ping stackoverflow.com”,但在 swarm 服务容器内我可以“ping 8.8.8.8”而不是“ping stackoverflow.com”,它们无法解析域名。
在我的经理上/usr/sbin/dhclient-script
search eu-central-1.compute.internal
nameserver 10.0.0.2
在我的一个容器上/usr/sbin/dhclient-script
search eu-central-1.compute.internal
nameserver 127.0.0.11
options ndots:0
码头工人网络:
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
ID bridge bridge local
ID docker_gwbridge bridge local
ID host host local
ID ingress overlay swarm
ID my_overlay overlay swarm
ID none null local
我以这种方式启动 docker 服务:
docker service create \
--name myservice \
--replicas 1 \
--endpoint-mode dnsrr \
--network my_overlay \
--constraint 'node.role == manager' \
--env COOKIE='SRV insert indirect nocache maxidle 30m maxlife 8h' \
--env VIRTUAL_HOST='myservice' \
--env SERVICE_PORTS='8080' \
myservice_image
我认为 AWS VPC 和安全组配置正确,因为 ec2 实例可以访问外部域名,也可以从外部访问。例如,为什么 myservice 不能解析stackoverflow.com
?