共享docker集装箱

我有多个docker容器已通过文件系统更新进行了修改。 这些更新不是通过对dockerFile更改来表示的

这是进程的伪代码:

 docker pull image docker run image docker exec -it <image_id> bash 'make changes to running docker container image exit running docker container docker commit <new container name> 

要保存容器,我可以使用docker save...和容器的本地副本被保存。 可以推送到registry? 或者注册只是为了图像而不是容器?

是共享一个自定义的docker容器的单一方法导出为.tar文件,然后重新导入其他机器?

你永远不会共享容器,你总是分享图像。 您已经使用的docker commit命令不会保存容器 ,它会从该容器的文件系统 ( 文档 )创build一个新的映像

从容器的更改中创build一个新的图像

用法

 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] 

您可以像处理任何其他图像一样处理docker commit创build的图像(从中创build新的容器,将其推送到registry等)。 通过提交一个现有的容器来创build一个新的图像,你可以在任何你想要的位置推送这个图像:

 $ docker commit <some-running-container> yourusername/new-image $ docker push yourusername/new-image 

如果您不想使用registry,请使用docker save命令将现有映像导出到文件中,然后使用docker load命令再次导入该映像。

 $ docker commit <some-running-container> yourusername/new-image $ docker save yourusername/new-image > new-image.tar $ # On another machine: $ docker load < new-image.tar 

我不知道是否有共享容器的任何registry存在。 即使有,也会违反docker的哲学。 我不能想到共享映像失败,但容器会成功的用例。 图像是为了共享(独立于平台),容器(特定于平台)将从这些图像创build。