1、命令总览
命令 | 作用 |
---|---|
docker ps |
查看运行中的容器(-a 查看所有容器) |
docker logs [CONTAINER] |
查看容器日志(-f 实时追踪日志) |
docker inspect [CONTAINER] |
查看容器详细信息(JSON格式) |
docker stats [CONTAINER] |
实时监控容器资源占用(CPU/内存/网络) |
docker top [CONTAINER] |
查看容器内运行的进程 |
docker diff [CONTAINER] |
查看容器文件系统的变化(A添加/D删除/C修改) |
ps 列清单,logs 看日志,inspect 查元数据,stats 看资源,top 看进程,diff 看文件差
2、docker ps
# 只看正在运行的容器
docker ps
# 查看所有(含已退出)
docker ps -a
# 只显示 ID(配合其他命令批量处理)
docker ps -aq
# 过滤:状态为 exited 且名字包含 api
docker ps -a --filter "status=exited" --filter "name=api"
# 自定义列:ID、镜像、状态、端口
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}"
3、docker logs
# 实时跟踪 nginx 最后 100 行
docker logs -f --tail 100 nginx
# 只看某个时间段(2024-05-01 08:00 以后)
docker logs --since 2024-05-01T08:00:00 nginx
# 把日志导出到文件
docker logs nginx >& nginx.log
# 同时查看 stdout + stderr 并加时间戳
docker logs -t nginx
4、docker inspect
# 以 JSON 形式完整输出
docker inspect nginx
# 只看网络设置
docker inspect --format='{{json .NetworkSettings}}' nginx | jq
# 取单个字段:IP 地址
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' nginx
# 查看挂载卷映射
docker inspect -f '{{json .Mounts}}' nginx | jq
# 导出到文件备份
docker inspect nginx > nginx-inspect.json
5、docker stats
# 默认每秒刷新一次,显示 CPU/内存/网络/块 IO
docker stats
# 只看指定容器
docker stats nginx mysql
# 无交互输出一次即退出(脚本里用)
docker stats --no-stream --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}" nginx
# 按内存排序(需配合 watch)
watch -n1 'docker stats --no-stream --format "table {{.Container}}\t{{.MemPerc}}" | sort -k2 -hr'
6、docker top
# 列出 nginx 容器里的所有进程
docker top nginx
# 带 UID、PID、PPID、CMD 完整格式
docker top nginx -o pid,ppid,user,cmd
# 查看 mysql 容器里 mysqld 的线程
docker top mysql | grep mysqld
# 配合 ps 格式自定义(需要容器内有 ps)
docker top nginx aux
7、docker diff
# 显示自镜像启动以来,容器里新增/修改/删除的文件
docker diff nginx
# 输出解释:
# A /tmp/newfile 新增
# C /etc/nginx/nginx.conf 修改
# D /var/log/old.log 删除
# 与运行前镜像对比,判断配置漂移
docker diff web | grep -E 'C /etc|A /app'
# 导出差异列表做审计
docker diff nginx > nginx-diff.txt