1

我创建了一个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

4

1 回答 1

3

看来问题已经解决了。

我必须添加"dns": ["8.8.8.8","8.8.4.4"]/etc/docker/daemon.json.

我试图在 /etc/default/docker 中做同样的事情,它没有用,我想这是旧方法。

于 2017-05-18T11:18:24.493 回答