如何获取运行docker容器的IP地址

问题描述 投票:54回答:7

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

docker containers docker-for-mac
7个回答
65
投票

如果您不想将主机端口映射到容器,则可以直接访问容器的docker range ip。默认情况下,此范围仅从您的主机访问。您可以检查您的容器网络数据:

docker inspect <containerNameOrId>

过滤可能更好:

docker inspect <containerNameOrId> | grep '"IPAddress"' | head -n 1

通常,默认的docker ip范围是172.17.0.0/16。你的主机应该是172.17.0.1,你的第一个容器应该是172.17.0.2,如果一切正常,你没有指定任何特殊的网络选项。

编辑使用docker功能而不是“bash tricking”的另一种更优雅的方式:

docker inspect -f "{{ .NetworkSettings.IPAddress }}" <containerNameOrId>

9
投票

使用--format选项只获取IP地址而不是整个容器信息:

sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' <CONTAINER ID>

8
投票

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

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

5
投票

你可以用旗帜-P开始你的容器。这将“随机”端口“分配”到图像的公开端口。

使用docker port <container id>,您可以看到随机选择的端口。然后可以通过localhost:port访问。


3
投票

对于现代docker引擎,使用以下命令:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id

对于旧发动机使用:

docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_name_or_id

1
投票

对于我的情况,下面适用于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


-1
投票

您无法从该主机外部访问docker的IP。如果您的浏览器位于另一台计算机上,则可以通过将-p 8080:8080传递给run命令将主机端口映射到容器端口。

通过-p,您可以将主机端口映射到容器端口,并设置代理将所述主机端口的所有流量转发到指定的容器端口。

© www.soinside.com 2019 - 2024. All rights reserved.