无法从主机连接docker ip

问题描述 投票:0回答:1

您好,我已经使用默认网络创建了一个容器,我想通过容器 IP 直接访问容器,例如: :8088 。但我不知道为什么我不能。我知道我可以使用 -p 通过 localhost 访问,但我想直接访问容器。

我尝试创建我的网络,并尝试将容器映射到主机网络。他们俩都没有工作。

docker network create my-bridge-network

我可以在容器之间互相执行 ping 操作,但不能从主机执行 ping 操作。

docker networking docker-compose dockerfile docker-network
1个回答
0
投票

在许多常见设置中无法访问容器专用 IP 地址。 您永远不需要查找它。 如果您的 Docker/主机操作系统设置不允许您访问它,那么任何 Docker 选项都无法实现它。

您只能在以下情况下从主机访问容器专用 IP 地址:

  1. 您使用的是本机 Linux 系统;和
  2. 您直接使用 Docker 引擎,而不是 Docker Desktop;和
  3. 您是从同一系统而不是不同的主机进行呼叫。

在 Docker Desktop 和类似的设置(Minikube-as-Docker、MacOS 上的 Podman 等)中,涉及到一个 Linux 虚拟机。 容器专用 IP 地址位于运行它们的计算机本地,并且不可路由。 但在这些基于虚拟机的设置之一中,这就是虚拟机,而主机系统是“不同的主机”,用于上面最后一条规则的目的。

从主机系统,如果需要访问容器,则需要使用

docker run -p
或 Compose
ports:
选项将容器端口发布到主机。 两个端口号不需要匹配,如果您担心将端口发布到网络,可以将其限制到本地系统。 (
docker run -p 127.0.0.1:5555:5432 postgres
运行一个 PostgreSQL 容器,只能从本地系统通过端口 5555 访问。)在容器之间,您可以使用 Docker 网络按名称调用容器,而无需直接知道其 IP 地址。

© www.soinside.com 2019 - 2024. All rights reserved.