我从docker image centos:7
创建了一个docker容器,并通过以下命令启动它:
docker run -h centos -it CONTAINER_ID
您可以看到我为其指定了主机名centos
,因此如果我从主机上ping泊坞窗容器,它应该可以正常工作。
ping centos
嗯,它没有用。我收到了以下错误。
ping: centos: Name or service not known
但是,如果我将主机名更改为docker容器的IP地址,它就可以工作。
> ping 172.17.0.2
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.041 ms
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.042 ms
64 bytes from 172.17.0.2: icmp_seq=3 ttl=64 time=0.037 ms
由于ip地址不如主机名可靠,我想知道如何通过主机名ping我的docker容器。
答案 0 :(得分:2)
如果您想通过主机名访问您的容器,则需要在主机上的/etc/hosts
中添加相应的IP。由于Docker不会修改主机上的任何内容,因此您必须手动执行此操作。
echo "$(docker inspect --format '{{ .NetworkSettings.IPAddress }}' centos) centos" >> /etc/hosts
相反,我建议在主机上映射所需的容器端口(使用-p <local-port>:<container-port>
)。