如何获取正在运行的docker容器的IP地址
我正在使用Docker for Mac,我正在Docker容器中运行基于nodejs的微服务。 我想通过浏览器testing节点微服务。 如何获取正在运行的docker集装箱的IP地址?
如果您不想将端口从主机映射到容器,则可以直接访问容器的泊坞窗范围ip。 此范围默认只能从您的主机访问。 你可以检查你的容器networking数据:
docker inspect <containerNameOrId>
可能是更好的过滤:
docker inspect <containerNameOrId> | grep '"IPAddress"' | head -n 1
通常,默认的docker ip range是172.17.0.0/16
。 你的主机应该是172.17.0.1
,你的第一个容器应该是172.17.0.2
如果一切正常,你没有指定任何特殊的networking选项。
编辑另一种更优雅的方式使用dockerfunction而不是“bash tricking”:
docker inspect -f "{{ .NetworkSettings.IPAddress }}" <containerNameOrId>
你可以用标志-P
启动你的容器。 这个“随机端口”分配给图像的暴露端口。
使用docker port <container id>
可以看到随机select的端口。 然后通过localhost:port
。
IP将是localhost
(因为我们正在处理您的计算机,但是如果您需要,您也可以键入127.0.0.1)以及您在容器中设置的port
。 例如,如果您使用像这样的端口选项运行Docker -p 3003:3000
那么这意味着NodeJS应该监听端口3000,而暴露的端口将会是3003
。 暴露在您的本地机器上。
因此你可以在浏览器中input:
- HTTP://本地主机:3003
- http://127.0.0.1:3003
如果你想在容器内获得它,你可以试试
ip a | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | grep 172.17