当前位置: 首页 > 知识库问答 >
问题:

如何从主机访问Docker容器的内部IP地址?

王旺
2023-03-14

我有两个docker容器在我的Mac主机上运行-容器1是docker Hub的Jenkins,容器2是docker Hub的SonarQube。我有两个容器成功运行。我可以通过http://localhost:8080/从我的主机访问Jenkins,我可以通过http://localhost:9000/访问我的SonarQube。

詹金斯容器是这样启动的:

docker run -d -p 8080:8080 -p 50000:50000 jenkins/jenkins:latest

SonarQube容器是这样启动的:

docker run -d -p 9000:9000 sonarqube
docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_name_or_id

难道我不应该能够从我的主机通过它们的内部IP地址访问每个容器吗?

我如何测试一个容器(例如Jenkins)可以通过IP地址访问另一个容器(例如SonarQube)?

共有1个答案

端木阳荣
2023-03-14

看起来您使用的是默认的bridge网络模型。内部IP意味着每个容器在bridge网络下相互通信。您无法从主机访问它们。

有多种选择供你选择。

  1. 您可以将http://172.17.0.3:9000配置为Jenkins中的声纳endpoint。
  2. 您可以将http://172.17.0.2:8000配置为Sonar中的jenkinsendpoint。
  3. 如果您不想在Ips之上硬编码,那么您的两个容器都可以使用Docker默认网路IP(172.17.0.1)及其内部端口与每个容器进行通信。因此您基本上也可以配置http://172.17.0.1
 类似资料:
  • 问题内容: 如标题所示。我需要能够检索Docker主机的IP地址和从主机到容器的端口映射,并在容器内部进行操作。 问题答案: 正如@MichaelNeale注意到的那样,没有必要使用此方法(除非仅在构建时需要此IP),因为此IP将在构建时进行硬编码。

  • 我有一个docker应用程序,我使用以下docker compose。yml运行它: 我有一个没有docker化的服务器在我的机器上运行,我可以通过访问它。我希望我的服务能够访问它。 我发现有人建议在我的服务配置中添加以下内容: 但是当我添加这个时,并尝试,我得到。当我尝试<code>curl时,也会出现同样的错误http://host.docker.internal:3000。 我拼命地尝试将端

  • 问题内容: 创建新容器后,是否可以运行命令以从主机获取容器的IP地址? 基本上,一旦Docker创建了容器,我想滚动自己的代码部署和容器配置脚本。 问题答案: 该的选项就派上用场了。 现代Docker客户端语法为: 旧的Docker客户端语法为: 这些命令将返回Docker容器的IP地址。 如注释中所述:如果在Windows上,请在花括号周围使用双引号而不是单引号。

  • 正如标题所说。我需要能够检索docker主机的IP地址,以及从主机到容器的端口映射,并在容器内部完成此操作。

  • 问题内容: 我是Docker的新手。 我运行了一个10节点的图像,并在运行的容器中克隆了一个存储库,运行了使用文件监视程序启动服务器的应用程序。我需要访问容器内的代码库,并在Windows主机上运行的IDE中打开它。如果完成了,那么我还希望当我在IDE中更改文件时,这些更改会在容器中引起文件监视程序。 任何帮助表示赞赏。谢谢, 问题答案: 您正在寻找的概念称为卷。您需要启动一个容器并在其中安装主机

  • 问题内容: 我有一个运行詹金斯的码头集装箱。作为构建过程的一部分,我需要访问在主机上本地运行的Web服务器。是否可以将主机Web服务器(可以配置为在端口上运行)暴露给jenkins容器? 编辑:我正在Linux机器上本地运行docker。 更新: 除了下面的@larsks答案之外,要从主机获取主机IP的IP地址,我还要执行以下操作: 问题答案: 在Linux上本地运行Docker时,您可以使用接口