Docker查看容器IP,docker inspect命令
时间:2026-10-8 08:15 作者:emer 分类: 无
前言
容器之间要互相通信,得知道容器的IP。本文讲怎么用docker inspect查看容器IP和详细信息。
一、查看容器IP
最简单的方法
docker inspect 容器名
输出一大串JSON,找IPAddress字段。
只看IP
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器名
直接输出IP地址,比如:172.17.0.2
查看所有运行中容器的IP
docker ps -q | xargs docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'
输出:
/mynginx - 172.17.0.2
/mymysql - 172.17.0.3
/myphp - 172.17.0.4
二、docker inspect常用用法
查看容器挂载
docker inspect -f '{{.Mounts}}' 容器名
查看容器启动命令
docker inspect -f '{{.Config.Cmd}}' 容器名
查看容器环境变量
docker inspect -f '{{.Config.Env}}' 容器名
查看容器端口映射
docker inspect -f '{{.NetworkSettings.Ports}}' 容器名
查看容器网络
docker inspect -f '{{.NetworkSettings.Networks}}' 容器名
查看容器状态
docker inspect -f '{{.State.Status}}' 容器名
查看容器启动时间
docker inspect -f '{{.State.StartedAt}}' 容器名
查看容器日志路径
docker inspect -f '{{.LogPath}}' 容器名
三、查看镜像信息
查看镜像详细信息
docker inspect 镜像名
查看镜像作者
docker inspect -f '{{.Author}}' nginx
查看镜像默认启动命令
docker inspect -f '{{.Config.Cmd}}' nginx
四、容器之间怎么通信
用容器名通信(推荐)
Docker默认网络里,容器可以用容器名互相访问:
# 在nginx容器里ping mysql
docker exec mynginx ping mysql
不用记IP,直接用容器名就行。
用自定义网络
# 创建网络
docker network create mynet
# 容器加入网络
docker run --name mysql --network mynet -d mysql:5.7
docker run --name nginx --network mynet -d nginx
五、常见场景
场景1:Nginx反向代理连PHP
nginx配置里:
fastcgi_pass php:9000;
这里的php就是容器名,Docker会自动解析成容器IP。
场景2:PHP连MySQL
<?php
$pdo = new PDO('mysql:host=mysql;dbname=mydb', 'root', '123456');
?>
host填mysql,就是MySQL容器的名字。
六、容器IP会变吗?
会的。
容器重启后,IP可能会变。所以不要硬编码IP,用容器名通信最稳。
如果要固定IP: 用自定义网络,指定静态IP。
# docker-compose.yml
services:
mysql:
networks:
mynet:
ipv4_address: 172.20.0.10
常见坑
坑1:inspect输出太多,找不到IP
解决: 用 -f 参数过滤,只看你要的字段。
坑2:容器停了就看不到IP
容器停止状态下,IPAddress是空的。
解决: 先启动容器:docker start 容器名
坑3:不同网络的容器互相ping不通
原因: 容器在不同网络里。
解决: 把它们加到同一个网络:
docker network connect mynet 容器名
坑4:用容器名ping不通
原因: 不是默认网络,或者Docker版本太老。
解决: 用自定义网络,或者直接用IP。
坑5:host网络模式看不到IP
用 --network=host 启动的容器,IP和宿主机一样。
解决: 不用查了,就是宿主机的IP。
总结
常用命令:
| 命令 | 说明 |
|---|---|
| docker inspect 容器名 | 看容器全部信息 |
| docker inspect -f '{{.NetworkSettings.IPAddress}}' 容器名 | 只看IP |
| docker inspect -f '{{.Mounts}}' 容器名 | 看挂载 |
| docker inspect -f '{{.Config.Env}}' 容器名 | 看环境变量 |
记住: 容器之间用容器名通信,别硬编码IP,重启就变了。
遇到问题加QQ23979811 协助处理
标签: Docker docker inspect 容器IP 容器信息 容器网络