docker - 从主机通过主机名访问容器

标签 docker networking containers overlay

我有一些 docker 容器,它们联合了单个 docker 覆盖网络。 在此网络下,每个容器都通过(容器的)主机名进行访问。但我无法通过主机名从主机(我的真实主机)访问容器。

如何从我的真机通过 docker 容器主机名访问容器?

最佳答案

您可以通过启动自己的 DNS 解析器容器来做到这一点。

docker run -d --name devdns -p 53:53/udp \
  -v /var/run/docker.sock:/var/run/docker.sock ruudud/devdns

运行 DNS 服务器后。服务器已映射到您的本地主机。在 Linux 上,您可以编辑 /etc/resolv.conf 并在顶部添加 nameserver 127.0.0.1。此更改将在重新启动后恢复。

现在如果你启动一个 docker 容器

docker run -d --hostname tarunlalwani --name tlalwani ubuntu:16.04 sleep 2000

现在您可以使用容器名称或主机名 ping 容器

$ ping tlalwani.dev
PING tlalwani.dev (172.17.0.6) 56(84) bytes of data.
64 bytes from 172.17.0.6: icmp_seq=1 ttl=64 time=0.030 ms

$ ping tarunlalwani.dev
PING tarunlalwani.dev (172.17.0.1) 56(84) bytes of data.
64 bytes from 172.17.0.1: icmp_seq=1 ttl=64 time=0.026 ms

dev 是默认域名。您可以使用环境变量更改此设置。更多详情请参阅https://github.com/ruudud/devdns

关于docker - 从主机通过主机名访问容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45898458/

相关文章:

linux - 产生数据包错误

ios - 通过单击主视图中的按钮更改容器 View 中的按钮标签

html - 容器流体不是全屏宽度

docker - 如何让 `cos-extensions install gpu`在Google Cloud VM上运行?

c - DPDK 中 IPv4 数据包的大小错误

linux - 到 VPN 的下一跳静态路由获取 "Network is unreachable'

docker - 使用 docker 在本地运行 Travis

python - Sha256与pip的不匹配安装在新的docker镜像上

docker - 如何在gitlab CI中的docker-in-docker(dind)中设置代理

VirtualBox 中的 Docker