【问题标题】:How to ping Docker-Container inside host network?如何在主机网络内 ping Docker-Container?
【发布时间】:2020-10-08 09:45:39
【问题描述】:

我现在使用 Docker 容器有一段时间了,但不知道如何 ping 作为我的主机网络一部分的 docker 容器。

所以直到现在我创建了我的容器,指定名称和网络标志,如许多教程中所述:https://www.digitalocean.com/community/questions/how-to-ping-docker-container-from-another-container-by-name

我可以在哪里创建一个网络,然后在这些网络中运行我的容器,例如:

docker run -d --name web1  -n testnetwork
docker run -d --name web2  -n testnetwork

这将使我能够通过以下方式相互 ping 我的容器:

docker exec -it web1 bash # enter container
ping web2 #ping second container

现在我必须使用目前仅在“主机”网络中运行的给定应用程序。要从我的其他容器访问这个容器,它们必须在同一个网络中(==“主机”)。

但我似乎无法再相互 ping 我的容器了。我也无法使用他们的名字从我的主机上 ping 我的容器。

我是否忽略了什么?

任何帮助将不胜感激! 最好的问候

【问题讨论】:

    标签: docker containers remote-access ping host


    【解决方案1】:

    如果你设置--network host,你基本上禁用了D​​ocker的整个网络堆栈。除其他外,这会禁用正常的容器间通信:如果您使用主机网络,则不能通过其名称调用另一个容器。很少需要主机网络(并且在某些主机平台上不能很好地工作);我首先要看的是您是否可以切换回标准(桥接)网络。

    如果您确实使用--network host 运行容器,则它与在该主机上运行的其他进程无法区分。这意味着您不能直接向它发送 ICMP 数据包,就像您可以 ping(1) 您的 ssh 守护程序或 Web 浏览器一样。您需要使用主机的 IP 地址或 DNS 名称连接到容器,即使是从同一主机上的其他容器。 From inside of a Docker container, how do I connect to the localhost of the machine? 讨论了几种方法来做到这一点。

    (我认为当容器接收到 ICMP ECHO 数据包时,您无法自定义 Docker 或 Linux 的行为;ping(1) 容器似乎没有那么有用。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 2015-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多