Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
你能共享Docker容器吗?_Docker - Fatal编程技术网

你能共享Docker容器吗?

你能共享Docker容器吗?,docker,Docker,我一直在试图弄清楚,为什么人们会选择将设置的每个“步骤”添加到Dockerfile,从而在特定状态下创建容器 在我看来,另一种选择是从一个简单的基本映像(如ubuntu)创建一个容器,然后(通过shell输入)以您喜欢的方式配置您的容器 但是你可以共享容器吗?如果你只能与Docker共享图像,那么我理解为什么人们希望容器设置的每个步骤都列在Dockerfile中 我之所以问这个问题,是因为我认为移植shell命令、更改配置文件等操作会让人头疼。要纠正Dockerfile语法并让它们正常工作,需要

我一直在试图弄清楚,为什么人们会选择将设置的每个“步骤”添加到
Dockerfile
,从而在特定状态下创建容器

在我看来,另一种选择是从一个简单的基本映像(如
ubuntu
)创建一个容器,然后(通过shell输入)以您喜欢的方式配置您的容器

但是你可以共享容器吗?如果你只能与Docker共享图像,那么我理解为什么人们希望容器设置的每个步骤都列在
Dockerfile

我之所以问这个问题,是因为我认为移植shell命令、更改配置文件等操作会让人头疼。要纠正
Dockerfile
语法并让它们正常工作,需要做些什么?但作为Docker的新手,我可能高估了这项任务的难度

编辑:我认为在每个设置步骤中使用
Dockerfile
的另一个有效原因是为了记录容器的初始状态。与给定处于特定状态的容器不同,但不一定能够从容器的图像基本状态了解所有操作

但是您可以共享容器吗?如果您只能与Docker共享图像,那么我理解为什么您希望在Docker文件中列出容器设置的每个步骤

严格地说,。但是,可以使用以下命令从现有容器创建新图像:

$docker提交
此命令将从现有容器中创建一个新映像,您可以从注册表中推送和拉入该容器,从中导出和导入以及创建新容器

我之所以问这个问题,是因为我想,移植shell命令、更改配置文件等以纠正Dockerfile语法并使其正常工作时会遇到一些麻烦?但作为Docker的新手,我可能高估了这项任务的难度

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

编辑:我认为在每个设置步骤中使用Dockerfile的另一个有效原因是为了记录容器的初始状态。与给定处于特定状态的容器不同,但不一定能够从容器的图像基本状态了解所有操作


对。如评论中所述,拥有自动化且可复制的图像构建有明显的优势。如果您手动构建容器,然后使用
docker commit
创建映像,则您不一定知道如何在以后重新构建此映像(当您希望发布应用程序的新版本或在更新的基础映像上重新构建映像时,这可能是必需的).

当您想通过非常轻微的更改重建图像时,您有什么建议?Docker等的一半要点是尽可能地自动化,并对所有内容进行可复制的构建。@JonSkeet有效点。如果你想在回答中详细说明,我会接受。我不想,因为我只是一个临时的码头工人。我怀疑另一个用户可能会写出更好的答案。
$ docker commit <container-name> <image-name>