docker - 如何从主机获取所有 Docker 容器的 IP 地址?
问题描述
(类似于How to get a Docker container's IP address from the host? ,但略有不同,因为我们对这里的所有容器都感兴趣)
我遇到了与我们的内部服务器的 IP 冲突,该服务器与 Docker 容器冲突。我已重新配置/etc/docker/daemon.json
,将default-address-pools
设置设置为另一个网络。但是我现在如何定位我的七个 Docker 容器中的哪一个正在使用这个特定的 IP 网络?
解决方案
docker network ls
通过列出所有 Docker 网络,可以部分帮助您:
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
3eb73575a250 bridge bridge local
6ce0e4a8be79 centre_isp_services_default bridge local
abe7381d0bfd elasticsearchhq_default bridge local
bb4387bdfac2 host host local
cc3e69407994 metrics_default bridge local
55f1c6914497 none null local
26f3247f27cc postgres-112_default bridge local
docker network inspect bridge
提示信息可在以下位置获得IPAM.Config.Subnet
:
$ docker network inspect bridge
[
{
"Name": "bridge",
"Id": "3eb73575a2503d6758f8baed97ec478ebaed3e75df21b4269bd170edd94337de",
"Created": "2019-11-08T11:33:49.489800945+02:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.31.0.0/24"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
},
"Labels": {}
}
]
人们本来希望docker network ls --format '{{.Name}} {{.IPAM.Config.Subnet}}'
能够向我们提供这些信息,但遗憾的是,事实并非如此。使用该命令只有几个字段可用。
解决方案
所以,我们必须跳过几个圈才能完成它。这可以解决问题:
$ for e in $(docker network ls --format '{{.Name}}') ; do docker network inspect $e --format '{{ printf "%-40s" .Name}} {{.IPAM.Config}}'; done
bridge [{172.31.0.0/24 map[]}]
centre_isp_services_default [{172.24.0.0/16 172.24.0.1 map[]}]
elasticsearchhq_default [{172.23.0.0/16 172.23.0.1 map[]}]
host []
metrics_default [{172.22.0.0/16 172.22.0.1 map[]}]
none []
postgres-112_default [{192.168.0.0/20 192.168.0.1 map[]}]
推荐阅读
- ruby-on-rails - 在保存模型之前访问所有关联,包括嵌套属性
- parsing - XML 节点更新错误 - java.io.FileNotFoundException: (Permission denied)
- c - 我应该在 for 循环中还是在它之外放置一个赋值?
- android - 矢量可绘制图标在 android<6 中崩溃
- c# - 根据我在标签中选择的文件自动选择图标
- paypal - 问:如何在 PayPal REST SDK 中执行交易后获取“invoice_id”值?
- php - 在mysql表中插入html表值
- centos7 - 如何使用 libvirt-go 包创建 vm - 出现启动错误
- html - HTML表格内容对齐
- neo4j - Neo4j-GraphQL、GRANDstack 应用程序、模式是否已修复?