如何获得用户定义的码头网络中所有集装箱的列表?我想得到一个特定的用户定义的码头网络的每个容器的所有提交哈希。
vc6uscn91#
docker network inspect \ -f '{{ range $key, $value := .Containers }}{{ printf "%s\n" $key}}{{ end }}' \ <network-id>
将给予属于network-id网络的容器散列的换行符分隔列表。您可以调整printf以获得其他语法(逗号分隔、制表符分隔、容器ID+名称等)。
network-id
printf
$ docker network inspect \ -f '{{ range $key, $value := .Containers }}{{printf "%s: %s\n" $key .Name}}{{ end }}' \ web-ingress 0b7f82ad7535ac7c1a454aaf0a5df6b87547d3cb9d751d0e0e1b4952a849b11b: mon_grafana.1.v5i0ea6nv12k0h3eo8egglg6n 1cce723642af2ce9382c7d46cca868d4674b4645d07458eeed9e928d29a4fb1f: mon_prometheus.1.lsfdcig6uhqfbbv7n07irpj3j 1f4840710f77fa1e02bd3e95581139b9f3c13fe4c857ce6ac44bfbdae4916920: mon_alertmanager.1.kwvw7kqsfpi9qzpmqdrd85yc7 2efea443fee41fd5dbca714145ca6ff95d91be9c60a469be597aadfaca90914d: mon_unsee.1.3lg8qgnvshibklnypzt5rw95s 6fdb893488f6e56766501e763d4c60196ae12a22ee9bd204d84fe324331714e8: mon_dashboard.1.r6b6nhatwmk88y5ncgagnaxh4 lb-web-ingress: web-ingress-endpoint
8ulbf1ek2#
您可以列出所有网络:
docker network ls
并检查一个网络以查看其主机(容器)
docker network inspect <network-id>
检查容器,您可以看到它连接到哪个网络:
docker inspect <container-id>
更多信息请参见文档:https://docs.docker.com/engine/userguide/networking/work-with-networks/#create-networks
cnjp1d6j3#
使用纯bash而不使用python的另一种方法-对我来说更容易记住
docker network inspect YOUR_NETWORK_ID | grep Name | tail -n +2 | cut -d':' -f2 | tr -d ',"'
样品输出
container1 container2
dvtswwa34#
使用自定义网络列出容器名称的简单命令是:
docker inspect network-name | grep Name
此命令将列出网络名称和连接到该网络的容器,如下所示:
"Name": "network-name", "Name": "Container1", "Name": "Container2",
mw3dktmi5#
解决办法也可以简单如下图。只列出集装箱名称
docker network inspect NETWORK ID | grep "Name" | awk -F":" '{print $2}' | tr -d ',"'
a0zr77ik6#
这是使用python's json parsing的bash命令
docker network inspect YOUR_NETWORK_ID \ | python -c "import sys, json; print([v['Name'] for k,v in json.load(sys.stdin)[0]['Containers'].items()])"
[u'container1', u'container2']
lskq00tm7#
我发现当一个容器带有属性network_mode: "service: <some service name>"“docker inspect”或“docker network inspect”命令不会向您提供上述详细信息。您将看到的内容如下所示:"NetworkMode": "container: <some container id representing the service>"
network_mode: "service: <some service name>"
"NetworkMode": "container: <some container id representing the service>"
w9apscun8#
请允许我介绍另一种获得结果的方法,仍然使用docker network inspect,但在数据检查和输出格式方面提供了其他可能性。列出Docker的可用网络:
docker network inspect
$ docker network ls NETWORK ID NAME DRIVER SCOPE a1682358dfa3 bridge bridge local c6910d1da750 host host local c9790e542025 none null local 9b265ecb4042 web_default bridge local
检查网络,输出为JSON,访问Containers对象并修饰JSON:
$ docker network inspect web_default -f '{{json .Containers}}' | python3 -m json.tool { "5d05c2606b022b0c9bc480f138b8f8f0e382dca4b1decb1c27181a66e641803f": { "Name": "django", "EndpointID": "b6bf6b1dc5437f2359fb550368a5bc6529cd80fa5b9ece3c752eecef6627ea57", "MacAddress": "02:42:ac:12:00:03", "IPv4Address": "172.18.0.3/16", "IPv6Address": "" }, "b971715bd0b3560831b03e86bcf2151ed04a60a46ad90b24f1f2265617360344": { "Name": "postgres", "EndpointID": "5883f465e235c66327271c1dfd05372f02012efa78928dd447c5444b0468647c", "MacAddress": "02:42:ac:12:00:02", "IPv4Address": "172.18.0.2/16", "IPv6Address": "" } }
您甚至可以将命令输出重定向到,以便进一步检查:
$ docker network inspect web_default -f '{{json .Containers}}' | python3 -m json.tool > web_default_containers.json
8条答案
按热度按时间vc6uscn91#
将给予属于
network-id
网络的容器散列的换行符分隔列表。您可以调整
printf
以获得其他语法(逗号分隔、制表符分隔、容器ID+名称等)。8ulbf1ek2#
您可以列出所有网络:
并检查一个网络以查看其主机(容器)
检查容器,您可以看到它连接到哪个网络:
更多信息请参见文档:https://docs.docker.com/engine/userguide/networking/work-with-networks/#create-networks
cnjp1d6j3#
使用纯bash而不使用python的另一种方法-对我来说更容易记住
样品输出
dvtswwa34#
使用自定义网络列出容器名称的简单命令是:
此命令将列出网络名称和连接到该网络的容器,如下所示:
mw3dktmi5#
解决办法也可以简单如下图。只列出集装箱名称
a0zr77ik6#
这是使用python's json parsing的bash命令
样品输出
lskq00tm7#
我发现当一个容器带有属性
network_mode: "service: <some service name>"
“docker inspect”或“docker network inspect”命令不会向您提供上述详细信息。
您将看到的内容如下所示:
"NetworkMode": "container: <some container id representing the service>"
w9apscun8#
请允许我介绍另一种获得结果的方法,仍然使用
docker network inspect
,但在数据检查和输出格式方面提供了其他可能性。列出Docker的可用网络:
检查网络,输出为JSON,访问Containers对象并修饰JSON:
您甚至可以将命令输出重定向到,以便进一步检查: