docker - Docker多个IP地址

标签 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

最佳答案

容器已连接到多个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/

相关文章:

java - 将 Java webapp 部署到在 Docker 容器中运行的 Tomcat 8

ruby-on-rails - 1 个系统上的 2 个 Docker 项目和 docker-compose 选择了错误的 ruby​​ 版本(除非我重建)

docker - 如何让docker容器每次重启时都运行脚本?

docker - Dockerfile 中的交互式命令

docker - 我应该安装什么包而不是 libpcre++-dev 在 Alpine Golang 中使用 C 代码?

mysql - Docker 与 mysql 和 django。尽管进行了任何尝试,与 mysql 的连接都被拒绝

python - 从一个容器到另一个容器运行命令

docker - 无法在docker中连接neo4j和elasticsearch

docker - 使用来自 docker 的 openvino

docker - 这个Dockerfile是扩展镜像还是创建新镜像?