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

2020-07-15 19:11:07

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

相关新闻

相关游戏