【问题标题】:Extracting IPv4 address from docker inspect bridge从 docker 检查桥中提取 IPv4 地址
【发布时间】: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 工具箱或其他主机。

标签: docker go


【解决方案1】:

--format 选项采用Go template。如果您想遍历 .Containers 映射,可以使用 range 操作来完成。例如:

{{ range $containerIndex, $data := .Containers }}{{ $containerIndex }} - {{ $data.IPv4Address }}{{"\n"}}{{end}}

产生类似的东西

161a4657d65738907ab1d09d00ad38dd134a5c9ea7f346387cce50281f31f900 - 172.20.0.2/16

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-24
    • 2010-11-06
    • 2013-05-01
    • 2014-03-29
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多