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