我有一个正在运行的debian容器,在该容器中,我可以通过其ip ping服务器,如下所示:
ping 9.1.1.1
但如果我这样做:
ping fileserver01
它将生成错误,表示无法访问。
但是它们在主机(ubuntu)中都可以正常工作。我有什么办法可以解决?谢谢!
答案 0 :(得分:1)
快速解决方案是在docker运行时使用--add-host
,或者如果您使用compose,则使用extra_hosts
-
例如-
docker run -it --add-host fileserver01:9.1.1.1 debian ....
这会将主机条目放入您的/etc/hosts
-
ubuntu@ip-10-0-0-186:~$ sudo docker run -it --add-host fileserver01:9.1.1.1 debian bash -c "cat /etc/hosts ; ping fileserver01"
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
9.1.1.1 fileserver01
172.17.0.4 23f2df5d9b24
PING fileserver01 (9.1.1.1) 56(84) bytes of data.
^C
--- fileserver01 ping statistics ---
8 packets transmitted, 0 received, 100% packet loss, time 6999ms
答案 1 :(得分:0)
如果您要创建一个新的容器,它将位于默认的网桥网络中。
默认情况下,桥接网络没有DNS服务器。
您可以做两件事:
1。)将容器置于默认的网桥网络中,并使用--link选项手动配置容器以相互了解。
docker run -d -P --name <container1> --link <container2>
2。)创建一个新网络并在创建容器时使用--network选项。
docker run -d --name <container_name> --network <network_name>
同一网络中的容器可以通过引用容器名称而不是IP地址进行交互。
docker container exec -it <container1_name> ping <container2_name>
-link是旧选项,因此可以在功能中删除。
这是用于识别其他容器的容器。
希望这对您有帮助!