Docker多个ipaddress

我有几个容器运行

vagrant@nav:~$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3401574617ea j/ros-tutorials:latest "/tini -- /ros_ent..." About an hour ago Up About an hour rosdemo_master.1.yled0m2ygtoha1gs09mrvwho5 dd1a5a4ed5b2 j/ros-tutorials:latest "/tini -- /ros_ent..." About an hour ago Up About an hour rosdemo_listener.1.fjv2u7yxihxvzkfzmomhnq9 

但是当我尝试使用下面的脚本得到他们的ipaddress –

 for i in $(sudo docker ps -q); do sudo docker inspect $i| grep IPA; done 

我得到以下输出 –

  "SecondaryIPAddresses": null, "IPAddress": "", "IPAMConfig": { "IPAddress": "10.255.0.5", "IPAMConfig": { "IPAddress": "10.2.0.7", "SecondaryIPAddresses": null, "IPAddress": "", "IPAMConfig": { "IPAddress": "10.2.0.9", 

想知道为什么我得到3 ipaddresses –

 10.255.0.5 10.2.0.7 10.2.0.9 

容器连接到多个Dockernetworking。

不要使用grep来提取IP地址,这是所有结构化的数据,Docker支持开箱即用模板格式。

获取主要IP地址:

 docker inspect $CID \ -f '{{ .NetworkSettings.IPAddress }}' 

获取分配给networking的IP地址:

 docker inspect $CID \ -f '{{ range .NetworkSettings.Networks }}{{ .IPAddress }}{{ end }}' 

要打印networking名称以及IP:

 docker inspect $CID \ -f '{{ range $k,$v :=.NetworkSettings.Networks }}{{$k}} {{.IPAddress}}{{ end }}'