说,如果我在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服务可以通过--name
Docker 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实例 我不想使用命