本地主机在Docker容器中是什么意思?

说,如果我在Docker容器中使用此命令。

/opt/lampp/bin/mysql -h localhost -u root -pThePassword

这里的本地主机指的是什么?主机的IP还是Docker容器自己的IP?

回答:

localhost始终引用当前容器。它永远不会引用另一个容器,也永远不会引用物理系统中运行的不在同一容器中的任何其他内容。建立与数据库主机的出站连接localhost或将其配置localhost为数据库主机通常没有用。

localhost可以指代在Docker之外的系统上运行的守护程序,或者指代您已使用docker run

-p选件发布的端口。

localhost是指从其调用的系统。

localhost始终为127.0.0.1,并且该IP地址是特殊的,并且始终localhost且其行为与上述相同。


,最好的方法是确保它们位于相同的Docker网络上(您是从相同的Docker Compose

YAML文件启动的;您在同一网络上执行了docker network create,然后又docker run --net

...在同一网络上进行了操作)并使用Docker的内部DNS服务可以通过--nameDocker Compose

YAML文件中的容器名称或容器内部的端口号来引用它们。即使目标具有已发布的带有docker run -p选项或Docker Compose

ports:设置的端口,也要使用 第二个 (容器内部的)端口号。

,确保您使用docker run -p或Docker Compose

ports:选项启动了容器,并使用该选项中的第一个端口号连接到 主机的 IP地址或DNS名称。

不是在容器中,在这种情况下(仅在这种情况下)localhost将一致地工作。


如果您使用来启动容器--net host,则localhost指的是物理主机,并且您处于“同一物理主机上的终端窗口”场景中。

如果您不愿意在同一个容器中拥有多个服务器,则可以使用localhost它们之间进行通信。

如果您在Kubernetes中运行,并且同一容器中有多个容器,则可以使用localhost它们在它们之间进行通信。在Pod之间,您应该在每个Pod

/部署之前设置服务,并使用形式的DNS名称service-name.namespace-name.svc.cluster.local

以上是 本地主机在Docker容器中是什么意思? 的全部内容, 来源链接: utcz.com/qa/411904.html

回到顶部