如何获取 docker 容器 IP

本文记录了几种获取 Docker 容器的 IP 地址的方式。

Docker 网络解释

首先来了解一下 Docker 的网络是如何工作的。首先是默认的bridge 网络。当使用 Docker 时,如果没有指定其它驱动默认会使用桥接网络。

Docker 容器的 IP 地址

默认情况下,会为连接到容器的每个 Docker 网络分配一个IP地址,并为每个网络分配一个默认的子网掩码,用作稍后分配 IP的地址池。

通常 Docker 默认使用 172.17. 0.0/16 作为容器网络的子网。

使用 Docker Inspect

Docker inspect 是检索 Docker 对象底层信息的很棒的方式。可以以非常简单的方式在返回的 JSON 里找出想要的字段。

1
2
3
4
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 75000c343eb7

# 输出
172.24.0.3

75000c343eb7 为实际容器的 id,输入 id 只要保证唯一即可,不必全部输入。

使用 Docker exec

1
2
3
4
5
6
7
8
9
10
docker exec redis cat /etc/hosts

# 输出
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.25.0.3 bfa21d61842as

参考

如何获取 Docker 容器的 IP 地址