当前位置: 首页 > 面试题库 >

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

云星波
2023-03-14
问题内容

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

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

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


问题答案:

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

从主机系统上的Shell中localhost可以指代在Docker之外的系统上运行的守护程序,或者指代您已使用docker run -p选件发布的端口。

在不同的系统localhost是指从其调用的系统。

就IP地址而言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空间外部 ,确保您使用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



 类似资料:
  • 我现在很困惑。我尝试了很多我可以在网上找到的东西,但是,没有一个解决它。我使用WSL2安装了Win10和Docker desktop来托管Linux容器。我使用以下命令启动詹金斯网站。 这个很管用。我可以使用访问网站 谢谢你 编辑:只是想解释一下我做了什么来解决我的问题。创建network是我最初所做的,但由于我卷曲网页的方式错误,所以失败了。我做只是为了便于在上定位我的容器。但是,正如我的问题中

  • 以下图片: 当我运行这个命令时,我可以在http://localhost:4444/上看到Selenium 任何帮助让这两种方式中的任何一种有效。

  • 澄清: 我有一台安装了Docker的macbook 我有一个带有MySQL的docker容器 我想从MacBook上的终端连接到在上述容器上运行的mysql实例 我不想使用命令来实现此操作。相反,我想直接从终端使用客户机(而不通过docker容器隧道进入)。 我没有在本地运行MySQL,所以端口3306应该是打开的,可以随时使用。 我用来启动容器的命令是:

  • 但是,如何从Docker for Mac上的容器中可靠地找到主机IP呢?该IP何时可能更改? 编辑:副本https://stackoverflow.com/a/24716645/6309

  • 我封装了一个应用程序,它是自动化Selenium测试的测试驱动程序。Selenium服务器(也称为Selenium Hub)运行在另一个容器中,以及本地主机4444下的Firefox节点。但我的应用程序无法访问它: 我通过docker-comush启动了这些容器: 我猜我的docker作文有错,但我想不出来。请帮忙!顺便说一句:我在Windows 7上运行,使用Docker和一个流浪的虚拟机。在我

  • 问题内容: 我正在运行一个docker mysql映像,以下是docker-compose.yml文件的外观: 这很好。 我的问题是:如何从主机(我的Macbook)上的命令行mysql客户端连接到在该容器上运行的MySQL实例? 澄清: 我有一台装有Docker的Macbook 我有一个带有mysql的docker容器 我想从Macbook的终端连接到上述容器上运行的mysql实例 我不想使用命