1、docker commit 简介
docker commit
是根据容器的更改创建一个新镜像,将容器的文件更改或设置提交到新镜像中。这允许你通过运行交互式shell调试容器,或者将工作数据集导出到另一台服务器。一般来说,最好使用Dockerfiles以文档化和可维护的方式管理镜像。提交操作不包括容器内挂载的卷中包含的任何数据。默认情况下,当镜像被提交时,正在提交的容器及其进程将暂停。这减少了在创建提交过程中遇到数据损坏的可能性。如果不希望出现这种行为,可以将--pause
选项设置为false。--change
选项将对创建的镜像应用Dockerfile指令。支持的Dockerfile指令:CMD
|ENTRYPOINT
|ENV
|EXPOSE
|LABEL
|ONBUILD
|USER
|VOLUME
|WORKDIR
2、docker commit 语法
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
参考文档:https://docs.docker.com/engine/reference/commandline/commit/
3、docker commit 命令
1)commit 容器
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c3f279d17e0a ubuntu:12.04 /bin/bash 7 days ago Up 25 hours desperate_dubinsky 197387f1b436 ubuntu:12.04 /bin/bash 7 days ago Up 25 hours focused_hamilton docker commit c3f279d17e0a svendowideit/testimage:version3 f5283438590d docker images REPOSITORY TAG ID CREATED SIZE svendowideit/testimage version3 f5283438590d 16 seconds ago 335.7 MB
2)提交一个带有新配置的容器
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c3f279d17e0a ubuntu:12.04 /bin/bash 7 days ago Up 25 hours desperate_dubinsky 197387f1b436 ubuntu:12.04 /bin/bash 7 days ago Up 25 hours focused_hamilton 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]
3)使用新的CMD提交一个容器并EXPOSE指令
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c3f279d17e0a ubuntu:12.04 /bin/bash 7 days ago Up 25 hours desperate_dubinsky 197387f1b436 ubuntu:12.04 /bin/bash 7 days ago Up 25 hours focused_hamilton docker commit --change='CMD ["apachectl", "-DFOREGROUND"]' -c "EXPOSE 80" c3f279d17e0a svendowideit/testimage:version4 f5283438590d docker run -d svendowideit/testimage:version4 89373736e2e7f00bc149bd783073ac43d0507da250e999f3f1036e0db60817c0 docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 89373736e2e7 testimage:version4 "apachectl -DFOREGROU" 3 seconds ago Up 2 seconds 80/tcp distracted_fermat c3f279d17e0a ubuntu:12.04 /bin/bash 7 days ago Up 25 hours desperate_dubinsky 197387f1b436 ubuntu:12.04 /bin/bash 7 days ago Up 25 hours focused_hamilton
4、选项说明
选项 | 默认 | 描述 |
--author , -a | 作者(如,姓名) | |
--change , -c | 在创建的镜像上应用Dockerfile指令 | |
--message , -m | 提交信息 | |
--pause , -p | true | 在提交期间暂停容器 |