我正在使用Mac的Docker。我在Docker容器中运行基于Node.js的微服务。我想通过浏览器测试节点微服务。如何获取正在运行的Docker容器的IP地址?
Answers:
如果您不想将端口从主机映射到容器,则可以直接访问容器的docker range ip。默认情况下,仅从主机访问该范围。您可以执行以下操作来检查您的容器网络数据:
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
。
编辑 使用docker功能而不是“ bash欺骗”的另一种更优雅的方法:
docker inspect -f "{{ .NetworkSettings.IPAddress }}" <containerNameOrId>
localhost
:)
http://172.17.0.2:anyPort
从主机使用我提出的方法来完成。当然,如果要使用主机上的localhost访问它,则必须映射端口。会看到OP想要的。
docker run --name struts --rm -i tomcat
2.获取容器的ip(如果只有一个):docker inspect struts | grep '"IPAddress"' | head -n 1
3.在主机的浏览器中将其打开http://x.x.x.x:8080
。您可以看到Apache Tomcat默认页面。
使用--format
选项仅获取IP地址,而不是整个容器信息:
sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' <CONTAINER ID>
如果您想直接在容器中获取它,可以尝试
ip a | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | grep 172.17
就我而言,以下在Mac上适用:
我无法直接在Mac上访问容器IP。我需要使用localhost
端口转发,例如,如果端口为8000,则http://localhost:8000
请参阅https://docs.docker.com/docker-for-mac/networking/#known-limitations-use-cases-and-workarounds
原始答案来自:https : //github.com/docker/for-mac/issues/2670#issuecomment-371249949
您无法从该主机外部访问Docker的IP。如果您的浏览器在另一台计算机上,则最好通过传递-p 8080:8080
运行命令来将主机端口映射到容器端口。
通过后,-p
您可以将主机端口映射到容器端口,并且将代理设置为将所述主机端口的所有trafix转发到指定的容器端口。