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

如何从docker容器中获取docker主机的IP地址[重复]

周和志
2023-03-14

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

共有3个答案

赫连晋
2023-03-14

更新:在Docker for Mac上,从18.03版开始,您可以使用主机。码头工人。内部作为主机的IP。见阿尔贾比尔的回答。对于Docker For Mac的早期版本,以下答案可能仍然有用:

在Mac的Docker上,docker0桥接器不存在,因此这里的其他答案可能不起作用。然而,所有传出的流量都是通过父主机路由的,因此只要您尝试连接到一个它识别为自身的IP(docker容器不认为是自身的),您就应该能够连接。例如,如果从父计算机运行:

ipconfig getifaddr en0

这应该会显示Mac在其当前网络上的IP,docker容器也应该能够连接到此地址。如果这个IP地址发生变化,这当然是一件痛苦的事情,但是你可以在你的Mac上添加一个定制的环回IP,而容器并不认为这是它自己,通过在父机器上执行类似的操作:

sudo ifconfig lo0 alias 192.168.46.49

然后,您可以使用telnet从docker容器中测试连接。在我的例子中,我想连接到远程xdebug服务器:

telnet 192.168.46.49 9000

现在,当流量进入你的Mac地址为192.168.46.49时(所有离开你的容器的流量都通过你的Mac),你的Mac会认为IP就是它自己。使用完此IP后,可以删除环回别名,如下所示:

sudo ifconfig lo0 -alias 192.168.46.49

需要注意的一件事是,如果docker容器认为流量的目的地是它自己,它不会将流量发送到父主机。因此,如果您遇到问题,请检查容器内的环回接口:

sudo ip addr show lo

在我的例子中,这显示了inet 127.0.0.1/8,这意味着我不能在127中使用任何IP* 范围。这就是我使用192.168的原因* 在上面的例子中。确保您使用的IP不会与您自己网络上的某个内容冲突。

穆铭晨
2023-03-14

从版本18.03开始,您可以使用host.docker.internal作为主机的IP。

在Docker for Mac、Docker for Windows以及其他平台上工作。

这是Mac专用docker的更新。对于雨衣。localhost,从17.06版开始提供,以及docker。对于雨衣。主办内部,从17.12版开始提供,该版本可能仍在该平台上工作。

注意,与Mac和Windows文档一样,这仅用于开发目的。

例如,我在主机上设置了环境变量:

MONGO_SERVER=host.docker.internal

在我的docker-compose.yml文件中,我有这个:

version: '3'

services:
  api:
    build: ./api
    volumes:
      - ./api:/usr/src/app:ro
    ports:
      - "8000"
    environment:
      - MONGO_SERVER
    command: /usr/local/bin/gunicorn -c /usr/src/app/gunicorn_config.py -w 1 -b :8000 wsgi
甘永春
2023-03-14
/sbin/ip route|awk '/default/ { print $3 }'

正如@MichaelNeale所注意到的,在Dockerfile中使用此方法没有意义(除非我们仅在构建时需要此IP),因为此IP将在构建时进行硬编码。

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

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

  • 问题内容: 如标题所示。我需要能够检索Docker主机的IP地址和从主机到容器的端口映射,并在容器内部进行操作。 问题答案: 正如@MichaelNeale注意到的那样,没有必要使用此方法(除非仅在构建时需要此IP),因为此IP将在构建时进行硬编码。

  • 本文向大家介绍Docker 获取Docker机器的IP地址,包括了Docker 获取Docker机器的IP地址的使用技巧和注意事项,需要的朋友参考一下 示例 要获取docker机器的IP地址,您可以使用以下命令:            

  • 我有两个docker容器在我的Mac主机上运行-容器1是docker Hub的Jenkins,容器2是docker Hub的SonarQube。我有两个容器成功运行。我可以通过从我的主机访问Jenkins,我可以通过访问我的SonarQube。 詹金斯容器是这样启动的: SonarQube容器是这样启动的: 难道我不应该能够从我的主机通过它们的内部IP地址访问每个容器吗? 我如何测试一个容器(例如

  • 我正在使用Docker为Mac。我正在Docker容器中运行一个基于nodejs的微服务。我想通过浏览器测试节点微服务。如何获取正在运行的docker容器的IP地址?