【发布时间】:2020-02-06 09:51:26
【问题描述】:
我正在尝试获取分配给添加到网桥的每个容器的 IPv4Address 列表。
我正在尝试使用docker network inspect bridge --format='{{((index .Containers))}}'。但是,我无法索引 0、1、2 并解析 IPv4Address。
test$ docker network inspect bridge
[
{
"Name": "bridge",
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"5b1a2e317cae4ed0086400d7ef9901a793d951bc5f5e7b6c678747d9b5c0f891": {
"Name": "test0",
"EndpointID": "d6a2524ef8e0eb75726d5482c30f6cc2ee8ba70544463720259939250b886cc1",
"MacAddress": "02:42:f0:7f:01:02",
"IPv4Address": "240.127.1.2/24",
"IPv6Address": ""
},
"bc087f0ba588e0da94053b5122e05f0cb0633c7e5745fe519576fd6e388d7df7": {
"Name": "test2",
"EndpointID": "598c2a57a85cda1bbd9a478da3d0b36d74b7ad0a24372fa6206ef3fc3283b631",
"MacAddress": "02:42:f0:7f:01:03",
"IPv4Address": "240.127.1.3/24",
"IPv6Address": ""
},
"d51198ea4aab32a7ea0bfee24bb2df4db700dd6a3ec88174141ec25f66e19946": {
"Name": "test1",
"EndpointID": "f82dacdfd65c29b85ae7ece5e59e7083cd4de3bc72814443d73cbc01be175cd0",
"MacAddress": "02:42:f0:7f:01:04",
"IPv4Address": "240.127.1.4/24",
"IPv6Address": ""
}
},
"Labels": {}
}
]
【问题讨论】:
-
目的是什么? (容器私有 IP 地址是无法访问的,除非在一个非常特定的 Docker/主机组合中;有更好的方法可以访问不需要知道它们的容器。)到目前为止,您尝试了什么,得到了什么结果?
-
我想通过主机本身联系他们。我试过这个
docker network inspect bridge --format='{{((index .Containers "5b1a2e317cae4ed0086400d7ef9901a793d951bc5f5e7b6c678747d9b5c0f891" "IPv4Address"))}}'。但是,我没有给容器 uuid,而是想知道是否有办法索引 -
@DavidMaze 我需要在 3 个容器中运行服务器,每个容器都在自己的命名空间中。如果我需要从主机命名空间中的另一个容器设置到 3 台服务器中的每台服务器的连接,我该如何获取 IP 地址?
-
您可以使用
docker run -p选项将端口发布到主机,然后使用主机的IP 地址(或可能localhost)和发布的端口访问容器。容器专用 IP 地址不适用于 Windows、MacOS、Docker 工具箱或其他主机。