你能分享Docker容器吗?

我一直在试图弄清楚为什么可以select将其设置的每个“步骤”添加到Dockerfile ,该Dockerfile将以特定状态创build您的容器。

我的想法是从一个简单的基础形象,如ubuntu创build一个容器,然后(通过shellinput)configuration你的容器的方式,你想。

但你可以分享容器吗? 如果您只能与Docker共享图像,那么我会理解为什么要在Dockerfile列出其容器设置的每一步。

我问的原因是因为我认为有一些与移植shell命令,configuration文件更改等有关的头痛纠正Dockerfile语法,并让他们正常工作? 但作为Docker的新手,我可能高估了这个任务的难度。

编辑 :我想在每个设置步骤有Dockerfile另一个有效的原因是为文档的容器的初始状态。 与在一定的状态下给予一个容器相反,但不一定有办法从容器的映像基础状态知道所有的事情。

但你可以分享容器吗? 如果您只能与Docker共享图像,那么我会理解为什么要在Dockerfile中列出其容器设置的每一步。

严格来说, 没有 。 但是,您可以使用docker commit命令从现有容器创build新映像:

 $ docker commit <container-name> <image-name> 

这个命令将从现有的容器中创build一个新的镜像,你可以通过这个容器将它们推送到registry中,或者从registry中导出和导入并创build新的容器。

我问的原因是因为我认为有一些与移植shell命令,configuration文件更改等有关的头痛纠正Dockerfile语法,并让他们正常工作? 但作为Docker的新手,我可能高估了这个任务的难度。

如果您已经使用其他一些机制进行自动化configuration,您可以简单地将现有的自动化集成到Docker构build中。 例如,如果您已经使用shell脚本configuration您的映像,只需在您的Dockerfile中添加一个构build步骤,在其中将您的安装脚本添加到容器并执行它。 从理论上讲,这也可以用于像Puppet,Salt等configurationpipe理工具。

编辑:我想在每个设置步骤有Dockerfile的另一个有效的原因是为文档的容器的初始状态。 与在一定的状态下给予一个容器相反,但不一定有办法从容器的映像基础状态知道所有的事情。

真正。 正如评论中所提到的,有一个自动和可重现的图像构build明显的优势。 如果您手动构build容器,然后使用docker commit创build图像,则不必知道如何在稍后的时间点重新构build此映像(当您想要发布新版本的应用程序时可能需要这样做或者在更新的基础图像之上重新构build图像)。