如何获取正在运行的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:

如果你想在容器内获得它,你可以试试

 ip a | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | grep 172.17