Docker镜像及容器迁移相关技术深入剖析-Docker商业环境实战

425 阅读2分钟

专注于大数据及容器云核心技术解密,可提供全栈的大数据+云原生平台咨询方案,请持续关注本套博客。如有任何学术交流,可随时联系。更多内容请关注《数据云技术社区》公众号。

1 持久化容器-export

  • export命令用于持久化容器(不是镜像)。
  • 导出后在本地可以看到有一个centos.tar的容器快照。

2 持久化镜像-save

  • Save命令用于持久化镜像(不是容器)。
  • 将一个镜像导出为文件,再使用docker load命令将文件导入为一个镜像,会保存该镜像的的所有历史记录。比docker export命令导出的文件大,很好理解,因为会保存镜像的所有历史记录。
sudo docker images
接着执行保存:
sudo docker save busybox-1 > /home/save.tar

3 导入某个容器-import

  • 使用docker import命令将容器导入成为一个新的镜像,
  • 有了容器快照之后,我们可以在想要的时候随时导入。导入快照使用docker import命令。
  • 注意-是数据流
  • docker import可以重新指定镜像的名字
例如我们可以使用cat centos.tar | docker import - my/centos:v888 导入容器快照作为镜像

4 导入某个容器-load

  • docker import可以重新指定镜像的名字,docker load不可以
docker load < /home/save.tar

显示镜像的所有层(layer)
sudo docker images --tree
  • 执行命令,显示下面的内容,导出后再导入(exported-imported)的镜像会丢失所有的历史。
  • 而保存后再加载(saveed-loaded)的镜像没有丢失历史和层(layer)。
  • 这意味着使用导出后再导入的方式,你将无法回滚到之前的层(layer),同时,使用保存后再加载的方式持久化整个镜像,就可以做到层回滚(可以执行docker tag 来回滚之前的层)

5 总结

比较实用,总结于此。

专注于大数据及容器云核心技术解密,可提供全栈的大数据+云原生平台咨询方案,请持续关注本套博客。如有任何学术交流,可随时联系。更多内容请关注《数据云技术社区》公众号。