如何检索Docker容器的内部IP地址

假设我们有一个 Docker 容器在我们的系统上运行,容器 ID 为“e350390fd549”,我想获取其内部 IP 地址。
首先,推荐的方法是使用docker inspect command
以下 linux 命令将打印有关 Docker 容器的详细信息,包括其内部 IP 地址:

# docker inspect e350390fd549
...
    "NetworkSettings": {
        "Bridge": "docker0",
        "Gateway": "172.17.42.1",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "IPAddress": "172.17.0.2",
        "IPPrefixLen": 16,
        "IPv6Gateway": "",
        "LinkLocalIPv6Address": "fe80::42:acff:fe11:2",
        "LinkLocalIPv6PrefixLen": 64,
        "MacAddress": "02:42:ac:11:00:02",
        "PortMapping": null,
        "Ports": {}
...

也可以跳闸默认的 docker inspectdocker 命令的输出以仅获取 IP 地址值:

# docker inspect -f '{{ .NetworkSettings.IPAddress }}' e350390fd549
172.17.0.2

根据在 docker 容器中运行的操作系统,我们还可以尝试在内部执行 ifconfig命令,从而检索其 IP 地址:

docker exec -it e350390fd549 /sbin/ifconfig eth0
OR
docker exec -it e350390fd549 ip add show eth0

另一种最后的替代方法是直接从位于 /var/lib/docker/containers/CONTAINER-IDconfig.json文件中检索容器的 IP 地址。
例如:

#  grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" config.json
172.17.0.2
172.17.42.1

第一个 IP 地址是实际的容器 IP 地址,第二个 IP 地址是其网关。

日期:2020-07-07 20:54:43 来源:oir作者:oir