Docker命令行参考(6) – docker commit提交容器的更改创建新镜像

  1. Usage:  docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
  2.  
  3. Create a new image from a container's changes
  4.  
  5. Options:
  6.   -a, --author string    Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
  7.   -c, --change value     Apply Dockerfile instruction to the created image (default [])
  8.       --help             Print usage
  9.   -m, --message string   Commit message
  10.   -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。

使用新配置提交一个容器

  1. $ docker ps
  2. ID                  IMAGE               COMMAND             CREATED             STATUS              PORTS
  3. c3f279d17e0a        ubuntu:12.04        /bin/bash           7 days ago          Up 25 hours
  4. 197387f1b436        ubuntu:12.04        /bin/bash           7 days ago          Up 25 hours
  5. $ docker inspect -f "{{ .Config.Env }}" c3f279d17e0a
  6. [HOME=/ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin]
  7. $ docker commit --change "ENV DEBUG true" c3f279d17e0a  svendowideit/testimage:version3
  8. f5283438590d
  9. $ docker inspect -f "{{ .Config.Env }}" f5283438590d
  10. [HOME=/ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin DEBUG=true]

使用新的CMD和EXPOSE指令提交一个容器

  1. $ docker ps
  2. ID                  IMAGE               COMMAND             CREATED             STATUS              PORTS
  3. c3f279d17e0a        ubuntu:12.04        /bin/bash           7 days ago          Up 25 hours
  4. 197387f1b436        ubuntu:12.04        /bin/bash           7 days ago          Up 25 hours
  5.  
  6. $ docker commit --change='CMD ["apachectl", "-DFOREGROUND"]' -c "EXPOSE 80" c3f279d17e0a  svendowideit/testimage:version4
  7. f5283438590d
  8.  
  9. $ docker run -d svendowideit/testimage:version4
  10. 89373736e2e7f00bc149bd783073ac43d0507da250e999f3f1036e0db60817c0
  11.  
  12. $ docker ps
  13. ID                  IMAGE               COMMAND                 CREATED             STATUS              PORTS
  14. 89373736e2e7        testimage:version4  "apachectl -DFOREGROU"  3 seconds ago       Up 2 seconds        80/tcp
  15. c3f279d17e0a        ubuntu:12.04        /bin/bash               7 days ago          Up 25 hours
  16. 197387f1b436        ubuntu:12.04        /bin/bash               7 days ago          Up 25 hours
标签:容器Docker 发布于:2019-11-19 15:42:19