共享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。