我可以用“提交docker容器的整个状态吗?”;“docker提交”吗;? 例1

我可以用“提交docker容器的整个状态吗?”;“docker提交”吗;? 例1,docker,docker-container,docker-image,Docker,Docker Container,Docker Image,我有一个运行了一段时间的jenkins容器,并安装了一些插件。此外,我还为我的管道配置了一些构建步骤。现在我使用docker commit sd12418fsw mystuff/configuredjenkins:1.0 问题: 是否将此容器的状态复制到新映像?因此,如果我将此映像推送到另一台服务器上的另一个注册表,并从configuredjenkins:1.0映像运行一个容器,它将具有与我提交的相同的状态(配置和插件) 例2 我有一个运行的ubuntu容器。在这个容器中,我开始使用apt ge

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

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

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

问题:
完成后,我希望保存此设置。运行
docker commit jd234hac mystuff/mymicroductsetup是否会给我一个包含所有设置内容的映像?

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


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

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


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

我阅读了有关此docker提交的内容--更改“ENV DEBUG true”c3f279d17e0a svendowideit/testimage:version3
,在这里我可以清楚地说明我做了什么。当我用apt get安装一些东西并添加这个
--change
行时,我会有点重复安装一些东西,对吗?难道没有办法让docker记录我的更改并将它们写入Dockerfile吗?否则,我必须决定是否安装了隐藏的或明确的内容,以便所有人都能通过
-更改
更改是消息,因此您需要手动记录,而无法记录更改。但是可以做的一件事是比较两个层之间的
~/.bash\u history
。但这只会给出通过bash执行的命令。如果您通过GUI安装了jenkins插件,那么这些更改在任何地方都无法记录,所以我必须卸载jenkins容器卷并重新安装所有插件?那么它会被记录下来吗?有没有明确的方法告诉docker也提交卷?目前还没有。您还可以使用Dockerfile自定义jenkins映像并直接指定插件。有关docker commit的更多详细信息,请参阅此答案,我在这里可以清楚地告诉您我做了什么。当我用apt get
安装一些东西并添加这个
--change
行时,我会有点重复安装一些东西,对吗?难道没有办法让docker记录我的更改并将它们写入Dockerfile吗?否则,我必须决定是否安装了隐藏的或明确的内容,以便所有人都能通过
-更改
更改是消息,因此您需要手动记录,而无法记录更改。但是可以做的一件事是比较两个层之间的
~/.bash\u history
。但这只会给出通过bash执行的命令。如果您通过GUI安装了jenkins插件,那么这些更改在任何地方都无法记录,所以我必须卸载jenkins容器卷并重新安装所有插件?那么它会被记录下来吗?有没有明确的方法告诉docker也提交卷?目前还没有。您还可以使用Dockerfile自定义jenkins映像并直接指定插件。有关更多详细信息,请参阅此答案