Docker多个ipaddress

时间:2017-08-11 17:11:53

标签: docker

我有几个容器正在运行

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

1 个答案:

答案 0 :(得分:0)

容器连接到多个Docker网络。

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

获取主IP地址:

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

获取分配给网络的任何IP地址:

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

要打印网络名称和IP:

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