【问题标题】:How do I resolve hostnames to Docker containers from the host?如何将主机名从主机解析为 Docker 容器?
【发布时间】:2016-03-23 17:40:58
【问题描述】:

我知道 Docker 在 127.0.0.11 上运行一个神奇的 dns,所以我想我会尝试

nslookup mycontainername 127.0.0.11

mycontainername 当然是我要访问的容器的名称。但是,这超时了。

;; connection timed out; no servers could be reached

我做错了什么?我在 Docker 1.10.3 上。如果有帮助,我将使用docker-compose 1.6.2 拉起一堆容器。

编辑这是Docker 1.10 access a container by it's hostname from a host machine的副本

【问题讨论】:

  • 你问的是如何识别容器的IP?
  • 不,我在问如何通过名称引用该容器。我知道如何获取容器的 IP,但如果我要自动化备份之类的事情,我宁愿使用名称。
  • magic DNS 在默认桥接网络上不起作用。
  • 还有其他方法吗?还是只能在容器中使用?
  • 帖子stackoverflow.com/a/51125399/9270227提供了一个很好的解决方案

标签: docker dns docker-compose


【解决方案1】:

对此有一个很好的解决方案,并且已在此帖子中得到解答:https://stackoverflow.com/a/51125399/9270227。它基本上只是一个名为docker-hoster 的轻量级容器,可以为您完成所有繁重的工作。

【讨论】:

  • 这是一个很酷的解决方法,我会考虑这一点,但我不喜欢触及我的配置文件的随机软件。不过,非常酷的解决方法,谢谢!
  • 这是一个有效的担忧。但是python脚本是开源的;所以我希望做的是将该脚本移植到 Bitnami minideb 容器,并利用 tecnativa/docker-socket-proxy 映像来访问 docker API。
  • 那肯定会有帮助。我发现的另一个解决方法是有一个别名(我称之为dip)来打印命名容器的IP,所以我可以做curl `dip container_name`之类的事情。不理想,但结果证明这是我真正需要的。
【解决方案2】:

documentation 中,它暗示这仅在您明确创建网络并将容器附加到它们时才有效。尝试类似:

docker network create -d bridge --subnet 172.25.0.0/16 isolated_nw
docker network connect isolated_nw mycontainername

看看你是否可以使用 127.0.0.11(在 1.10.3 版本上为我工作)

欲了解更多信息,请参阅this ticket

【讨论】:

  • 谢谢,等我回到办公室再找你的时候试试这个。
  • 好的,这对我特别不起作用。我创建了网络(172.25/16 而不是我的容器所在的 172.20/16,因为 docker 抱怨 ipv4 地址重叠)并将容器连接到它。 OTOH,我有点假设 docker-compose 确实创建了一个网络,事实上它确实创建了,正如 docker network ls 所证实的那样。
  • 其他一切正常:例如,我可以从其他容器中 ping 容器及其名称。我怀疑这是因为docker-compose-created 网络。
  • 不确定您使用的是什么操作系统,但在上面列出的故障单中,有些人遇到了问题,因为他们的机器上运行了防火墙软件。确保您的计算机上没有运行任何 IP 过滤器可能是值得的。另外,请在/etc/resolv.conf 进行战利品。在我的机器上,名称服务器 127.0.0.11 直到我将网络添加到容器之后才在该文件中。在它刚刚通过我的主机的服务器 IP 之前
  • 我使用的是 Ubuntu 15.10,但我将使用 CentOS 7 进行生产。我确保我没有防火墙阻止(事实上,任何端口和协议上的任何地方都允许一切),我什至将 IP 添加到我的/etc/resolv.conf,但它没有任何区别。
猜你喜欢
  • 2022-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多