正如标题所说。我需要能够检索docker主机的IP地址和从主机到容器的端口映射,并在容器内部执行此操作。
更新:在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不会与您自己网络上的某个内容冲突。
从版本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
/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地址?