2016-01-01 59 views
3

我一直在想出为什么人们可以选择将他们的设置的每个“步骤”添加到Dockerfile这将创建您的容器在一定的状态。你可以分享Docker容器吗?

在我心中另一种方法是刚刚创建像ubuntu一个简单的基本图像容器中,然后(通过shell输入)配置的容器,你想要的方式。

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

我问的原因是因为我认为有一些头痛涉及到移植shell命令,配置文件更改等,以纠正Dockerfile语法并让它们正常工作?但作为Docker的新手,我可能高估了这项任务的难度。

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

+1

当你想用非常小的改变来重建图像时,你会有什么建议? Docker等等的一半是尽可能地自动化,并且具有可重现的一切构建。 –

+0

@JonSkeet有效点。如果你想详细说明答案,我会接受。 –

+0

我宁可不要,因为只是一个休闲码头用户。我怀疑另一个用户可能会写出更好的答案。 –

回答

4

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

严格来说,。但是,您可以使用docker commit命令从现有的容器创建一个新的形象:

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

这个命令将创建一个从现有的容器一个新的形象,你可以推拉自/至登记,进口和出口从中创建新的容器。

我想问的原因是因为我想有参与移植的shell命令,对CONFIGS文件的变化等来纠正Dockerfile语法和让他们正常工作头疼的一些量?但作为Docker的新手,我可能高估了这项任务的难度。

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

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

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

相关问题