我的机器位于具有专用DNS服务器和用于DNS解析的专用区域的专用网络上。我可以从主机上解析此区域中的主机,但不能从主机上运行的容器中解析主机。
主持人 :
root@host:~# cat /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 127.0.1.1
root@host:~# ping privatedomain.io
PING privatedomain.io (192.168.0.101) 56(84) bytes of data.
集装箱 :
root@container:~# cat /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 8.8.8.8
nameserver 8.8.4.4
root@container:~# ping privatedomain.io
ping: unknown host privatedomain.io
很明显,Google的公共DNS服务器不会解决我的私有DNS请求。我知道我可以使用docker --dns 192.168.0.1
或DOCKER_OPTS="--dns 192.168.0.1"
在中设置强制设置/etc/default/docker
,但是我的笔记本电脑经常切换网络。似乎应该有系统的方法来解决此问题。
Docker
/etc/resolv.conf
通过复制主机的/etc/resolv.conf
,并过滤掉任何本地名称服务器(例如127.0.1.1)来进行填充。如果之后没有名称服务器,则Docker将添加Google的公共DNS服务器(8.8.8.8和8.8.4.4)。
根据Docker文档:
注意 :如果需要访问主机的localhost解析器,则必须在主机上修改DNS服务,以侦听可从容器内部访问的非localhost地址。
主机上的DNS服务是dnsmasq,因此,如果您使dnsmasq监听您的docker
IP,并将其添加到resolv.conf中,则docker将配置容器以将其用作名称服务器。
1 。 创建/编辑/etc/dnsmasq.conf
†并添加以下行:
interface=lo
interface=docker0
2 。 找到您的Docker IP(在本例中为172.17.0.1
):
root@host:~# ifconfig | grep -A2 docker0
docker0 Link encap:Ethernet HWaddr 02:42:bb:b4:4a:50
inet addr:172.17.0.1 Bcast:0.0.0.0 Mask:255.255.0.0
3 。 创建/编辑/etc/resolvconf/resolv.conf.d/tail
并添加以下行:
nameserver 172.17.0.1
4 。 重启网络,更新resolv.conf
,重启docker:
sudo service network-manager restart
sudo resolvconf -u
sudo service docker restart
您的容器现在将能够从主机使用的任何DNS服务器解析DNS。
†路径可能是/etc/dnsmasq.conf
,/etc/dnsmasq.conf.d/docker.conf
,/etc/NetworkManager/dnsmasq.conf
,或/etc/NetworkManager/dnsmasq.d/docker.conf
根据您的系统和个人喜好上。
问题内容: 我正在尝试摆脱配置中已弃用的Docker链接。当我重新创建容器时,剩下的就是摆脱那些nginx反向代理错误。 注意:我正在桥接模式下使用Docker网络。() 我在nginx中使用以下配置代码段: 我在Docker网络上以name 为主机名启动了一个容器。 然后,我在网络上启动了Nginx容器。 我可以从Nginx容器内ping 在nginx容器的文件中列出 Nginx日志说 我试过泊
本文向大家介绍Docker 上市网络,包括了Docker 上市网络的使用技巧和注意事项,需要的朋友参考一下 示例 该命令列出了在本地Docker主机上创建的所有网络。它包括默认网桥bridge网络,主机host网络和空null网络。默认情况下,所有容器都连接到默认网桥bridge网络。
本文向大家介绍Docker网络上的用户定义网桥,包括了Docker网络上的用户定义网桥的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将讨论为什么应该在默认桥网络上使用用户定义的桥网络。我们还将使用实际示例进行演示。 如果您使用用户定义的网桥进行容器网络连接,则该网络中的所有容器会自动将所有必需的端口公开给彼此,而不是公开给外部世界。这增加了容器之间的互操作性,并提供了更好的隔离性。 使用
问题内容: 我有一个具有多个IP地址的专用服务器,某些IP关联了mac地址,而其他IP(在子网中)则没有mac地址。我已经使用以下方法创建了docker macvlan网络: 我的IP:88.99.102.115,Mac:00:50:56:00:60:42。使用以下方法创建了一个容器: 这有效,我可以从外部访问该IP地址托管的Nginx。 IP没有MAC地址且网关不在子网中的情况。 子网:88.9
问题内容: 我正在尝试在我的机器(Ubuntu)上的docker上做一个詹金斯。 我必须访问我公司中的git repo。但是在詹金斯,我得到这个错误: 无法解析主机:gogs.mycompany.com 我认为这是DNS错误,因此我尝试像这样启动docker(使用–dns和–dns-search) sudo docker run -p 8080:8080 -p 50000:50000 -v / h