👋 我是三笠丶,一名专注数据库与数据库架构的 DBA。更多原创文章和技术资料同步更新:ora100.com
本文整理 Docker Engine、BuildKit、Compose、网络、存储、镜像仓库和日常排障常用的 100 条命令。示例以现代对象式子命令为主,同时保留少量常见短命令。
删除容器、镜像、卷和执行 prune 可能造成数据丢失;将用户加入 docker 组等同于授予较高主机权限,生产环境应配合最小权限和审计。
一、环境与信息
1. 查看客户端版本
docker --version
2. 查看客户端和服务端版本
docker version
3. 查看系统信息
docker info
4. 查看 Docker 帮助
docker --help
5. 查看磁盘使用
docker system df
6. 查看详细磁盘使用
docker system df -v
7. 查看事件流
docker events
8. 查看最近一小时事件
docker events --since 1h
9. 查看 daemon 状态
systemctl status docker --no-pager
10. 查看 daemon 日志
journalctl -u docker -n 200 --no-pager
二、镜像管理
11. 列出镜像
docker image ls
12. 拉取镜像
docker image pull nginx:1.29
13. 查看镜像详情
docker image inspect nginx:1.29
14. 查看镜像历史
docker image history --no-trunc nginx:1.29
15. 给镜像打标签
docker image tag app:v1 registry.example.com/team/app:v1
16. 登录镜像仓库
printf '%s' "$REGISTRY_PASSWORD" | docker login registry.example.com -u "$REGISTRY_USER" --password-stdin
17. 推送镜像
docker image push registry.example.com/team/app:v1
18. 保存镜像
docker image save -o app-v1.tar app:v1
19. 加载镜像
docker image load -i app-v1.tar
20. 删除镜像
docker image rm app:v1
三、容器创建与运行
21. 运行临时容器
docker container run --rm alpine:3.22 echo hello
22. 后台运行容器
docker container run -d --name web -p 8080:80 nginx:1.29
23. 交互运行容器
docker container run --rm -it ubuntu:24.04 bash
24. 设置环境变量
docker container run --rm -e APP_ENV=prod app:v1
25. 从文件加载环境变量
docker container run --rm --env-file .env app:v1
26. 绑定挂载目录
docker container run -d --name web -v "$PWD/html:/usr/share/nginx/html:ro" nginx:1.29
27. 使用命名卷
docker container run -d --name db -v db-data:/var/lib/postgresql/data postgres:18
28. 设置自动重启策略
docker container run -d --restart=unless-stopped --name api app:v1
29. 设置 CPU 限制
docker container run -d --cpus=2 --name api app:v1
30. 设置内存限制
docker container run -d --memory=1g --memory-swap=1g --name api app:v1
四、容器生命周期
31. 查看运行容器
docker container ls
32. 查看全部容器
docker container ls -a
33. 启动容器
docker container start web
34. 优雅停止容器
docker container stop --timeout 30 web
35. 重启容器
docker container restart web
36. 暂停容器
docker container pause web
37. 恢复容器
docker container unpause web
38. 重命名容器
docker container rename web web-old
39. 等待容器退出
docker container wait batch-job
40. 删除已停止容器
docker container rm web-old
五、日志与容器排障
41. 查看容器日志
docker container logs web
42. 实时追踪日志
docker container logs -f --tail 100 web
43. 查看最近十分钟日志
docker container logs --since 10m web
44. 进入运行中容器
docker container exec -it web sh
45. 以指定用户执行
docker container exec -u 0 web id
46. 查看容器进程
docker container top web
47. 查看资源使用
docker container stats
48. 查看单个容器统计
docker container stats --no-stream web
49. 查看容器变更文件
docker container diff web
50. 导出容器文件系统
docker container export -o web-rootfs.tar web
六、检查、复制与健康
51. 查看容器详情
docker container inspect web
52. 获取容器 IP
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' web
53. 查看健康状态
docker inspect -f '{{json .State.Health}}' web | jq
54. 查看退出码
docker inspect -f '{{.State.ExitCode}}' batch-job
55. 查看挂载点
docker inspect -f '{{json .Mounts}}' web | jq
56. 复制文件到容器
docker container cp app.conf web:/etc/app/app.conf
57. 从容器复制文件
docker container cp web:/var/log/nginx/error.log ./error.log
58. 查看端口映射
docker container port web
59. 发送信号
docker container kill --signal=HUP web
60. 更新资源限制
docker container update --cpus=2 --memory=1g web
七、构建镜像
61. 构建镜像
docker build -t app:v1 .
62. 指定 Dockerfile
docker build -f docker/Dockerfile -t app:v1 .
63. 禁用构建缓存
docker build --no-cache -t app:v1 .
64. 传入构建参数
docker build --build-arg VERSION=1.2.3 -t app:v1 .
65. 输出详细构建日志
docker build --progress=plain -t app:v1 .
66. 查看 Buildx Builder
docker buildx ls
67. 创建 Buildx Builder
docker buildx create --name multiarch --use
68. 构建多架构镜像
docker buildx build --platform linux/amd64,linux/arm64 -t registry.example.com/team/app:v1 --push .
69. 查看镜像清单
docker buildx imagetools inspect registry.example.com/team/app:v1
70. 清理构建缓存
docker builder prune
八、网络管理
71. 列出网络
docker network ls
72. 创建 bridge 网络
docker network create app-net
73. 创建指定网段
docker network create --subnet 172.30.0.0/24 app-net
74. 查看网络详情
docker network inspect app-net
75. 连接容器到网络
docker network connect app-net web
76. 断开容器网络
docker network disconnect app-net web
77. 使用 Host 网络
docker run --rm --network host alpine:3.22 ip address
78. 使用无网络模式
docker run --rm --network none alpine:3.22 ip address
79. 删除网络
docker network rm app-net
80. 清理未使用网络
docker network prune
九、卷与 Compose
81. 列出卷
docker volume ls
82. 创建卷
docker volume create db-data
83. 查看卷详情
docker volume inspect db-data
84. 备份命名卷
docker run --rm -v db-data:/data:ro -v "$PWD:/backup" alpine:3.22 tar -czf /backup/db-data.tar.gz -C /data .
85. 删除卷
docker volume rm db-data
86. 校验 Compose 配置
docker compose config -q
87. 启动 Compose 项目
docker compose up -d
88. 查看 Compose 服务
docker compose ps
89. 查看 Compose 日志
docker compose logs -f --tail=100
90. 停止 Compose 项目
docker compose down
十、上下文、安全与清理
91. 查看 Docker Context
docker context ls
92. 创建 SSH Context
docker context create prod --docker host=ssh://ops@docker.example.com
93. 切换 Context
docker context use prod
94. 查看镜像摘要
docker image inspect --format='{{json .RepoDigests}}' app:v1
95. 查看容器能力和安全选项
docker inspect -f '{{json .HostConfig.CapAdd}} {{json .HostConfig.SecurityOpt}}' web
96. 只读根文件系统运行
docker run --rm --read-only --tmpfs /tmp app:v1
97. 移除全部 Linux capabilities
docker run --rm --cap-drop ALL app:v1
98. 预览可清理空间
docker system df -v
99. 清理停止容器
docker container prune
100. 清理未使用资源
docker system prune
默认不删除未使用命名卷;执行前仍应确认清理清单。
总结
Docker 运维应围绕镜像可追溯、容器资源限制、日志轮转、网络隔离、卷备份和最小权限展开。生产清理前先运行 docker system df -v,并避免依赖容器可写层保存持久数据。
DBA 资源导航
- ora100.com · 数据库学习平台
- Oracle DBA 应该掌握的 100 条命令(建议收藏)
- MySQL DBA 应该掌握的 100 条命令(建议收藏)
- PostgreSQL DBA 应该掌握的 100 条命令
- SQL Server DBA 实用的 100 条命令(建议收藏)
- 达梦 DBA 应该掌握的 100 条命令(建议收藏)
- OceanBase DBA 应该掌握的 100 条命令(建议收藏)
- MongoDB DBA 应该掌握的 100 条命令(建议收藏)
更多 Oracle、MySQL、PostgreSQL、MongoDB 实战内容,可以访问 DBA 学习平台:ora100.com
感谢阅读。
我会持续分享 Oracle、GoldenGate、RAC、Data Guard、MySQL、PostgreSQL、OceanBase、电科金仓等数据库技术文章。
个人网站:ora100.com
