docker commit 可将运行中容器直接保存为新镜像,打包其文件系统变更,无需 Dockerfile;需先用 docker ps 查容器ID/名,再执行 docker commit [选项] 容器ID/名 镜像名:标签,推荐加 -m 和 -a 参数,并用 docker images 验证。

直接用 docker commit 命令就能把正在运行的容器保存为新镜像。它会把容器当前的文件系统变更(比如安装的软件、修改的配置、写入的数据)打包成一个可复用的镜像,不依赖 Dockerfile,适合快速固化环境。
确认目标容器
先查出你要保存的容器 ID 或名称:
- 运行
docker ps查看所有正在运行的容器 - 如果容器已停止,用
docker ps -a查全量列表 - 注意记录下容器的 ID(如
a1b2c3d4e5f6)或名字(如my-app)
执行 commit 创建镜像
语法很简单:
docker commit [选项] <容器ID或名称> <镜像名>:<标签>
- 例如:
docker commit my-app myweb:v1.2 - 如果不写标签,默认是
latest,即docker commit my-app myweb - 推荐加上
-m描述变更,比如:docker commit -m "add config and sample data" my-app myweb:v1.2 - 加
-a标注作者,便于追踪:docker commit -a "dev@example.com" my-app myweb:v1.2
验证和后续操作
提交后立刻验证是否成功:
- 运行
docker images,检查列表中是否出现myweb及对应标签 - 可以基于这个新镜像启动测试容器:
docker run --rm -it myweb:v1.2 cat /test.txt - 如需导出为 tar 文件以便迁移,用:
docker save -o myweb-v1.2.tar myweb:v1.2 - 在另一台机器上导入:
docker load -i myweb-v1.2.tar
这个过程不复杂但容易忽略细节——比如没加标签导致覆盖 latest、或忘记检查容器是否真有你想要的变更。只要容器里改过的文件还在,commit 就能捕获到。


















