- Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-
- Create a new image from a container's changes
-
- Options:
- -a, --author string Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
- -c, --change value Apply Dockerfile instruction to the created image (default [])
- --help Print usage
- -m, --message string Commit message
- -p, --pause Pause container during commit (default true)
此命令可以提交一个容器的文件更改或设置到一个新的镜像。这允许你通过运行一个交互shell调试一个容器或输出一个工作集到另一台服务器。通常最好使用Dockerfile以文档化和可维护的方式来管理镜像。
这个commit操作不会包括在挂载在容器内的volumes的任何数据。
默认下,当正在提交更改到镜像时,容器的进程将暂停直到提交完成。这减小了在创建提交的过程中数据损坏的可能性。如果不想暂停进程,可以设置–pause选项为false。
–change选项用来应用Dockerfile指令到将要创建的镜像。支持的Dockerfile指令为CMD|ENTRYPOINT|ENV|EXPOSE|LABEL|ONBUILD|USER|VOLUME|WORKDIR。
使用新配置提交一个容器
- $ docker ps
- ID IMAGE COMMAND CREATED STATUS PORTS
- c3f279d17e0a ubuntu:12.04 /bin/bash 7 days ago Up 25 hours
- 197387f1b436 ubuntu:12.04 /bin/bash 7 days ago Up 25 hours
- $ docker inspect -f "{{ .Config.Env }}" c3f279d17e0a
- [HOME=/ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin]
- $ docker commit --change "ENV DEBUG true" c3f279d17e0a svendowideit/testimage:version3
- f5283438590d
- $ docker inspect -f "{{ .Config.Env }}" f5283438590d
- [HOME=/ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin DEBUG=true]
使用新的CMD和EXPOSE指令提交一个容器
- $ docker ps
- ID IMAGE COMMAND CREATED STATUS PORTS
- c3f279d17e0a ubuntu:12.04 /bin/bash 7 days ago Up 25 hours
- 197387f1b436 ubuntu:12.04 /bin/bash 7 days ago Up 25 hours
-
- $ docker commit --change='CMD ["apachectl", "-DFOREGROUND"]' -c "EXPOSE 80" c3f279d17e0a svendowideit/testimage:version4
- f5283438590d
-
- $ docker run -d svendowideit/testimage:version4
- 89373736e2e7f00bc149bd783073ac43d0507da250e999f3f1036e0db60817c0
-
- $ docker ps
- ID IMAGE COMMAND CREATED STATUS PORTS
- 89373736e2e7 testimage:version4 "apachectl -DFOREGROU" 3 seconds ago Up 2 seconds 80/tcp
- c3f279d17e0a ubuntu:12.04 /bin/bash 7 days ago Up 25 hours
- 197387f1b436 ubuntu:12.04 /bin/bash 7 days ago Up 25 hours