docker ps 默认只显示正在运行的容器,docker ps -a 则列出所有容器(包括已停止、已退出、已创建未启动的),用于全面掌握容器状态与生命周期。
镜像是静态的、只读的模板,包含运行应用所需的所有文件、依赖和配置;容器是镜像的运行实例,启动后会在镜像顶层叠加一个可写层,所有修改(如安装软件、写入数据、调整配置)都发生在这里。
确认目标容器
先列出所有容器,包括已停止的:
- docker ps -a 查看容器 ID 或名称,注意状态(Up/Exited)和 CREATED 时间
- 确保容器当前状态符合预期——如果刚做完配置或数据写入,建议先 docker stop 再提交,避免运行中文件被锁或不一致
用 commit 命令保存为新镜像
这是最直接的方式,把容器当前文件系统快照固化成镜像:
- 基础命令:docker commit :
- 推荐加描述和作者信息:docker commit -m "添加了数据库配置" -a "ops@team" my_container myapp:v2.1
- 若担心运行时数据不一致,可加 -p 参数让 Docker 自动暂停容器再提交
验证并导出(可选)
提交后立即检查是否成功:
- 运行 docker images,确认新镜像出现在列表中,注意 IMAGE ID 和 CREATED 时间是否匹配
- 可快速测试:docker run --rm -it myapp:v2.1 ls /app 看关键文件是否存在
- 如需迁移或备份,用 docker save -o myapp-v2.1.tar myapp:v2.1 导出为 tar 文件
commit 和 export 的关键区别
别混淆这两个操作:
- docker commit + docker save:保留镜像分层结构、历史记录、CMD/ENV 等元数据,适合复用和部署
- docker export:只导出容器当前文件系统快照(扁平化),无层、无配置,导入后需手动指定启动命令,仅适合纯数据迁移











