Docker进阶命令与参数——AI教你学Docker
2.1 进阶命令与参数
Docker 在日常运维和开发中,除了常用的 run、ps、logs 等基础命令,还提供了一些功能强大、实用性很高的进阶命令。这些命令可用于容器信息洞察、变更管理、文件操作与资源动态调整等场景。
一、docker inspect
作用
- 深入查看容器、镜像、网络、卷等对象的详细元数据(JSON 格式)。
- 包含环境变量、挂载点、网络配置、进程信息、资源限制等丰富信息。
用法
docker inspect <容器名|容器ID|镜像名|网络名|卷名>
常见场景
- 获取某容器的 IP 地址
docker inspect -f '{{.NetworkSettings.IPAddress}}' mycontainer
- 查看挂载点
docker inspect -f '{{json .Mounts}}' mycontainer
- 检查配置、调试网络、自动化脚本调用等
二、docker diff
作用
- 查看容器文件系统自启动以来发生了哪些变更(增加、删除、修改的文件/目录)。
- 便于排查问题、调试和镜像优化。
用法
docker diff <容器名|容器ID>
输出示例
A
:Added 新增D
:Deleted 删除C
:Changed 修改
C /etc
A /app/logs/output.log
D /tmp/install.log
应用场景
- 检查容器内哪些文件被更改,为 commit 制作新镜像做准备
- 安全排查(比如确认临时文件、敏感配置是否被篡改)
三、容器 commit 与变更管理
1. commit(保存容器变更为新镜像)
- 将运行中或停止状态的容器当前状态“快照”为新的镜像。
- 适合临时环境调试、手工 patch 后保存成果。
docker commit [OPTIONS] <容器名|容器ID> [新镜像名:标签]
# 例:docker commit mycontainer myimage:debug
- 常用选项
-a
:作者-m
:提交信息
2. 变更管理最佳实践
- 建议通过 Dockerfile 规范化构建流程,commit 仅用于紧急场景或实验调试。
- commit 后的镜像可用
docker run
、docker push
等命令继续使用或分发。
四、docker cp(文件拷贝)
作用
- 容器与主机之间单次、瞬时地拷贝文件或目录(非挂载,不实时同步)。
用法
# 主机到容器
docker cp <主机路径> <容器名>:/容器路径# 容器到主机
docker cp <容器名>:/容器路径 <主机路径>
应用场景
- 导入初始数据、配置、证书到容器
- 导出日志、生成文件、调试快照等
注意事项
- 适合偶发性文件交互,大批量或实时数据建议用挂载卷。
五、docker update(动态调整资源)
作用
- 在不重启容器的前提下,动态调整部分资源限制参数(如 CPU、内存等)。
用法
docker update [OPTIONS] <容器名|容器ID>
常用参数
--cpu-shares
:CPU 权重--cpus
:分配 CPU 核心数--memory
:最大内存--restart
:重启策略
示例:
docker update --cpus=2 --memory=1G mycontainer
注意事项
- 并非所有资源都可动态调整(如某些内存参数),部分更改可能只在重启后生效。
- 适合应急扩容、性能调优、配额调整等需求。
六、总结与实用技巧
docker inspect
全方位了解对象详情,适合自动化和调试分析。docker diff
追踪容器内部变更,辅助安全和镜像构建。docker commit
能保存实验环境,但更推荐用 Dockerfile 管理。docker cp
便于快速导入导出文件,效率高于手动挂载。docker update
灵活应变业务需求,提升资源利用率。