我有几个容器正在运行
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
最佳答案
容器已连接到多个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 }}'
关于docker - Docker多个IP地址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45640487/