Ubuntu Docker容器无法解析主机

Ubuntu Docker容器无法解析主机,ubuntu,docker,dns,Ubuntu,Docker,Dns,从我的主机我可以ping谷歌 $ cat /etc/resolv.conf nameserver 127.0.1.1 search my.company.server $ ping google.com PING google.com (172.217.16.174) 56(84) bytes of data. 64 bytes from fra15s11-in-f14.1e100.net (172.217.16.174): icmp_seq=1 ttl=54 time=11.0 ms 64

从我的主机我可以ping谷歌

$ cat /etc/resolv.conf 
nameserver 127.0.1.1
search my.company.server

$ ping google.com
PING google.com (172.217.16.174) 56(84) bytes of data.
64 bytes from fra15s11-in-f14.1e100.net (172.217.16.174): icmp_seq=1 ttl=54 time=11.0 ms
64 bytes from fra15s11-in-f14.1e100.net (172.217.16.174): icmp_seq=2 ttl=54 time=10.7 ms
从容器中,我可以访问internet:

$ docker run ubuntu:14.04 cat /etc/resolv.conf
search my.company.server
nameserver 8.8.8.8
nameserver 8.8.4.4


$ docker run ubuntu:14.04 ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=45 time=16.4 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=45 time=16.3 ms
但无法ping主机名:

$ docker run ubuntu:14.04 ping google.com
<no answer>
与此类似:


但是重新启动没有帮助…

默认情况下,创建一个新的docker容器也会创建一个虚拟网络,将docker网络环境与主机网络环境(在某种程度上)分开。这允许您轻松启动多个容器,这些容器可能都在同一端口(例如80)上侦听,但可以映射到主机上的唯一端口(例如service1:80->host:8080,service2:80->host:8081)

docker运行您的\u映像--network=“host”
将容器网络适配器绑定到主机的适配器。这应该允许您通过主机的侦听端口访问主机。e、 g.
localhost:8080
但是,您需要记住,端口是一种稀缺资源,执行此操作时,不同容器中不能有冲突的端口侦听器

您还可以从docker容器中检索主机的ip地址,具体取决于您的操作系统和docker版本:

Mac/Windows: 从Docker v18.03+开始,您可以使用
host.Docker.internal
主机名连接到Docker主机

Linux:
docker container run-e“docker\u HOST=$(ip-4 addr show docker0 | grep-Po'inet\K[\d.]+')”
将使主机ip作为环境变量从docker container内可用:
docker\u HOST

如果运行此操作会发生什么<代码>docker运行--dns=8.8.8.8 ubuntu:14.04 ping google.com这不起作用…:(我也有同样的问题你的docker版本是什么?我在docker版本17.12.1-ce上得到这个,build 7390fc6
--network=“host”
flag解决了我的Fedora 32机器上的问题。端口稀少->重新启动解决了我的问题,谢谢!
$ docker --version
Docker version 1.10.1, build 9e83765

$ cat /proc/version
Linux version 4.2.0-27-generic (buildd@lgw01-12) (gcc version 5.2.1 20151010 (Ubuntu 5.2.1-22ubuntu2) ) #32-Ubuntu SMP Fri Jan 22 04:49:08 UTC 2016

$ cat /proc/sys/net/ipv4/ip_forward
1

$ ps -ef|grep [d]ocker
root   ....... /usr/bin/docker daemon -H fd://