Linux入门教程:Docker命令行参考(6) – docker commit提交容器的更改创建新镜像,这允许你通过运行一个


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

相关内容