Docker容器未从主机

时间:2018-05-23 14:57:10

标签: docker docker-compose docker-swarm

由于某种原因,我在Docker Swarm中使用Docker Compose文件创建的Docker容器没有正确的网络设置。

阅读有关网络here的Docker文档,我看到了:

By default, a container inherits the DNS settings of the Docker daemon, including the /etc/hosts and /etc/resolv.conf.You can override these settings on a per-container basis.

但是当我使用Docker Compose文件创建一个新堆栈时,容器内的/etc/resolv.conf文件与主机的/etc/resolv.conf文件没什么相似之处。因此,我无法连接到同一网络上的数据库服务器。

现在主机上的/etc/resolv.conf看起来像这样:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 10.0.0.254 search localdomain

在Docker容器中,它看起来像这样:

search localdomain nameserver 127.0.0.11 options ndots:0

要创建服务,我使用以下命令:

docker stack deploy --compose-file config.compose --with-registry-auth

Docker Compose文件相当大,但基本上只是一个应该启动的大量服务列表。 Docker Compose文件中没有定义网络选项。

作为测试,我还启动了一个服务而不是堆栈,这个服务确实正确地继承了/etc/resolv.conf文件。

任何人都知道为什么dns设置没有从主机正确继承?

系统规格:

操作系统:Ubuntu 16.04

Docker:18.03.1-ce,build 9ee9f40

0 个答案:

没有答案