我可以使用 "docker commit" 提交 docker 容器的整个状态吗?

Can I commit the whole state of a docker container with "docker commit"?

示例 1

我有一个 运行ning jenkins 容器有一段时间了,安装了一堆插件。我还为我的管道配置了一些构建步骤。现在我使用 docker commit sd12418fsw mystuff/configuredjenkins:1.0

问题:

这个容器的状态会被复制到新镜像吗?因此,如果我将此映像推送到另一台服务器上的另一个注册表,并从 configuredjenkins:1.0 映像中 运行 一个容器,它将具有与我提交时相同的状态(配置和插件)?

示例 2

我有一个 运行ning ubuntu 容器。在这个容器中,我开始使用 apt-get install emacs 并开始为我的微控制器开发环境创建一些目录。因为我喜欢 Arduino 和 Emacs - 我想将两者结合起来,成为一个酷酷的黑客风格 IDE 来开发东西。我完成了,现在我的 ubuntu 容器中有一个很好的开发设置。

问题:

完成后,我很想保存此设置。 运行ning docker commit jd234hac mystuff/mymicrocontrollersetup 给我一张包含所有设置内容的图像吗?

所以答案是肯定的,也不是。您在容器内所做的任何更改都是提交的一部分。但是,如果映射了卷,则对容器所做的任何修改都不会保存为状态。

此外,当您进行更改时,docker history 不会显示这些更改的任何详细信息。这不是一件好事,因为使用此图像的人不知道在提交的这一层中做了什么。