在 docker 容器中检索网桥的 IP 或通过环境变量提供
Retrieve bridge's IP within docker container or provide via environment variable
当我创建一个 docker 网络时,添加了一个网桥:
docker network create DUMMY
现在执行 ifconfig
得到:
br-8a429249b4d9: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.255.136.1 netmask 255.255.255.0 broadcast 10.255.136.255
inet6 fe80::42:88ff:fe9b:9a33 prefixlen 64 scopeid 0x20<link>
ether 02:42:88:9b:9a:33 txqueuelen 0 (Ethernet)
RX packets 9 bytes 388 (388.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 74 bytes 11136 (11.1 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
是否可以从 DUMMY
网络内的容器 运行 中检索 IP 10.255.136.1
?
我正在 docker 将需要源 IP 的应用程序(在这种情况下,是主机上的另一个应用程序 运行)设置在某些配置文件中的白名单中,我相信应该是网桥的IP。因此我的问题是从实际容器中检索该 IP。或者,有没有办法通过环境变量将该 IP 提供给容器?
网桥的IP地址将是容器内的默认网关。换句话说,您可以只解析例如ip route
寻找网桥地址。
例如,如果我创建一个 DUMMY 网络,我会得到:
6: br-ea7804d337bc: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:8e:97:b4:02 brd ff:ff:ff:ff:ff:ff
inet 172.20.0.1/16 brd 172.20.255.255 scope global br-ea7804d337bc
valid_lft forever preferred_lft forever
inet6 fe80::42:8eff:fe97:b402/64 scope link
valid_lft forever preferred_lft forever
如果我在那个网络上启动一个容器:
docker run -it --rm --net DUMMY alpine sh
我有以下路由 table:
/ # ip route
default via 172.20.0.1 dev eth0
172.20.0.0/16 dev eth0 scope link src 172.20.0.2
我可以通过 运行 获取 IP 地址本身,通过 awk
:
输出
/ # ip route | awk ' == "default" {print }'
172.20.0.1
当我创建一个 docker 网络时,添加了一个网桥:
docker network create DUMMY
现在执行 ifconfig
得到:
br-8a429249b4d9: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.255.136.1 netmask 255.255.255.0 broadcast 10.255.136.255
inet6 fe80::42:88ff:fe9b:9a33 prefixlen 64 scopeid 0x20<link>
ether 02:42:88:9b:9a:33 txqueuelen 0 (Ethernet)
RX packets 9 bytes 388 (388.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 74 bytes 11136 (11.1 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
是否可以从 DUMMY
网络内的容器 运行 中检索 IP 10.255.136.1
?
我正在 docker 将需要源 IP 的应用程序(在这种情况下,是主机上的另一个应用程序 运行)设置在某些配置文件中的白名单中,我相信应该是网桥的IP。因此我的问题是从实际容器中检索该 IP。或者,有没有办法通过环境变量将该 IP 提供给容器?
网桥的IP地址将是容器内的默认网关。换句话说,您可以只解析例如ip route
寻找网桥地址。
例如,如果我创建一个 DUMMY 网络,我会得到:
6: br-ea7804d337bc: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:8e:97:b4:02 brd ff:ff:ff:ff:ff:ff
inet 172.20.0.1/16 brd 172.20.255.255 scope global br-ea7804d337bc
valid_lft forever preferred_lft forever
inet6 fe80::42:8eff:fe97:b402/64 scope link
valid_lft forever preferred_lft forever
如果我在那个网络上启动一个容器:
docker run -it --rm --net DUMMY alpine sh
我有以下路由 table:
/ # ip route
default via 172.20.0.1 dev eth0
172.20.0.0/16 dev eth0 scope link src 172.20.0.2
我可以通过 运行 获取 IP 地址本身,通过 awk
:
/ # ip route | awk ' == "default" {print }'
172.20.0.1