docker导入导出镜像以及迁移与备份

已经部署的容器化服务,也不是不需要维护的。而且,由于生产环境往往有这样那样的严格要求,往往需要些非常规操作。Image(镜像)、Container(容器)迁移,就是一类有用的非常规操作。

以下镜像,均以最简单的Alpine为例。


1、容器保存为镜像


我们通过以下命令,将容器保存为镜像。语法:docker commit 容器id 要保存为的镜像名称


docker commit 6d03ca77d3c7 btpanel/baota:lnmp


正如我们所看见的,上面做的快照已经作为Docker镜像保存了。现在,为了备份该快照,我们有两个选择,一个是我们可以登录进Docker注册中心,并推送该镜像;另一个是我们可以将Docker镜像打包成tar包备份,以供今后使用。


如果我们不想备份到docker注册中心,而是想要将此镜像保存在本地机器中,以供日后使用,那么我们可以将其作为tar包备份。要完成该操作,我们需要运行以下 docker save 命令。


docker save -o container-backup.tar btpanel/baota:lnmp


2. 恢复容器


接下来,在我们成功备份了我们的Docker容器后,我们现在来恢复这些制作了Docker镜像快照的容器。如果我们已经在注册中心推送了这些Docker镜像,那么我们仅仅需要把那个Docker镜像拖回并直接运行即可。


docker load -i container-backup.tar 或者 docker load < container-backup.tar


-i 输入的文件;执行后再次查看镜像,可以看到镜像已经恢复


3.运行容器


docker run -itd --net=host --name baota-test btpanel/baota:lnmp 


docker cp baota-test:/www /www


docker stop baota-test && docker rm baota-test


docker run -itd -v /www:/www --net=host --restart=always --name baota btpanel/baota:lnmp


迁移容器同时涉及到了上面两个操作,备份和恢复。我们可以将任何一个Docker容器从一台机器迁移到另一台机器。在迁移过程中,首先我们将把容器 备份为Docker镜像快照。然后,该Docker镜像或者是被推送到了Docker注册中心,或者被作为tar包文件保存到了本地。如果我们将镜像推送 到了Docker注册中心,我们简单地从任何我们想要的机器上使用 docker run 命令来恢复并运行该容器。但是,如果我们将镜像打包成tar包备份到了本地,我们只需要拷贝或移动该镜像到我们想要的机器上,加载该镜像并运行需要的容器 即可。