一、问题
创建了一些镜像,或者有一些容器,我们希望它能够保存下来并且与其他小伙伴共享。怎么搞?
二、解决方案
对于已有镜像,可以使用docker save和docker load命令来创建一个压缩包(tarball);
而对于容器可以使用docker import 和 docker export进行导入导出操作。
让我们从一个容器开始,将它导出为一个新的压缩包文件,如下所示。
$ docker export quizzical_mestorf > update.tar$ lsupdate.tar
在这一章第1个例子中,我们将容器提交为镜像使用commit命令,同样的我们也可以使用export将容器打包成tar文件,再通过import命令导入为新的镜像。如下所示。
$ docker import - update < update.tarsha256:c198ffd4bb6108c80a7······$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEupdate latest c198ffd4bb61 12 seconds ago 167MB
接着如果想通过操作创建的镜像进行导入导出,可以使用load和save命令,如下所示
$ docker save -o ubuntu.tar ubuntu:update_vim$ lltotal 336424-rw-r--r--. 1 root root 0 Jan 22 17:30 orange-rw-------. 1 root root 172656128 Jan 23 15:53 ubuntu.tar-rw-r--r--. 1 root root 171838976 Jan 23 15:38 update.tar$ docker rmi ubuntu:update_vimUntagged: ubuntu:update_vimDeleted: sha256:2719f793123708b7087bc9f07c4e8671d316410fc31184eb281420e60cf863aeDeleted: sha256:ce90e1c19269851ef897fcfc8c3ecc4cf5ad480d0236b8ee9ad08fbd2f9d4c58$ docker load < ubuntu.tarad01e27575dd: Loading layer [==================================================>] 97.37MB/97.37MBLoaded image: ubuntu:update_vim
三、讨论
这个两组方法差别不大,有一个小细节就是,保存镜像会保留历史,而导出容器将会对它的历史进行压缩。
