Docker 如何通过url而不是运行容器中的ip地址访问服务器

Docker 如何通过url而不是运行容器中的ip地址访问服务器,docker,networking,containers,Docker,Networking,Containers,我有一个正在运行的debian容器,在容器内,我可以通过其ip ping服务器,如下所示: ping 9.1.1.1 但如果我这样做: ping fileserver01 它将生成错误,表示无法访问 但它们在主机ubuntu中都能正常工作。我能做些什么来修复它?谢谢 如果要创建一个新容器,它将位于默认网桥网络中 默认情况下,网桥网络没有DNS服务器 你可以做两件事: 一,。将容器置于默认网桥网络中,并使用-link选项手动配置容器以相互了解 docker run -d -P --name &

我有一个正在运行的debian容器,在容器内,我可以通过其ip ping服务器,如下所示:

ping 9.1.1.1
但如果我这样做:

ping fileserver01
它将生成错误,表示无法访问


但它们在主机ubuntu中都能正常工作。我能做些什么来修复它?谢谢

如果要创建一个新容器,它将位于默认网桥网络中

默认情况下,网桥网络没有DNS服务器

你可以做两件事:

一,。将容器置于默认网桥网络中,并使用-link选项手动配置容器以相互了解

docker run -d -P --name <container1> --link <container2>
二,。创建新网络并在创建容器时使用-network选项

docker run -d --name <container_name> --network <network_name>
同一网络中的容器可以与引用容器名称而不是IP地址进行交互

docker container exec -it <container1_name> ping <container2_name>
-链接是传统选项,因此可以在功能中删除

用于其他容器识别容器

希望这对你有帮助

快速修复方法是在docker运行时使用-add host,或者如果您使用的是compose-

例如—

docker run-it-add主机文件服务器01:9.1.1.1 debian

它将在您的/etc/hosts-


如果要访问外部服务器,则需要使用别名和相应的ip地址配置已知主机。名称fileserver01与ip地址之间的映射是什么?
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