你能共享Docker容器吗?

时间:2016-01-01 17:34:37

标签: docker

我一直在试图找出为什么人们可能会选择添加每个"步骤"他们的设置为Dockerfile,它将在某种状态下创建您的容器。

我认为另一种选择是从简单的基本图像(如ubuntu)创建一个容器,然后(通过shell输入)按照您喜欢的方式配置容器。

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

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

编辑:我认为在每个设置步骤中使用Dockerfile的另一个正当理由是有关容​​器初始状态的文档。而不是在特定状态下给出容器,而不一定知道从容器的图像库状态完成所有操作。

1 个答案:

答案 0 :(得分:4)

  

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

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

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

此命令将从现有容器创建一个新图像,您可以从/向注册表推送和拉出,导出和导入以及从中创建新容器。

  

我问的原因是因为我想在移植shell命令,配置文件更改等方面存在一些问题,以纠正Dockerfile语法并让它们正常工作?但作为Docker的新手,我可能会高估这项任务的难度。

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

  

编辑:我认为在每个设置步骤中使用Dockerfile的另一个正当理由是关于容器初始状态的文档。与在特定状态下给出容器相反,但不一定知道从容器的图像库状态完成所有操作。

真。正如评论中所提到的,对图像进行自动化和可重现的构建有明显的优势。如果您手动构建容器然后使用docker commit创建图像,则不一定知道如何在以后重新构建此图像(当您要发布新版本时可能需要重新构建此图像您的应用程序或在更新的基本映像之上重新构建映像。)