docker 的备份方式有 export 和 save 两种.
export 是当前的状态, 针对的是容器, docker save 是针对镜像 images.
export
找出要备份容器的 ID
- ? https://www.jb51.net/article/104529.htm#
- [[email protected] ~]$ docker ps -a
- CONTAINER ID IMAGE COMMAND CREATED STATUS NAMES
- 037b847bf093 CentOS "/bin/bash" 3 minutes ago Exited (0) 2 minute naughty_davinci
备份
- ? https://www.jb51.net/article/104529.htm#
- [[email protected] ~]$ docker export 037b847bf093>centos_demo.tar
- [[email protected] ~]$ du -sh centos_demo.tar
- 195M centos_demo.tar
export 是把容器打成一个 tar 包.
恢复
把刚才备份的 centos_demo.tar 打包到目标服务器
- ? https://www.jb51.net/article/104529.htm#
- [[email protected] ~]$ cat centos_demo.tar |docker import - CentOS:demo
- 8962416d1362f289ceb9848e21a95f03dc34eb6f234c8f98f1a6e1ec7fe34a67
查看新生成的镜像
- ? https://www.jb51.net/article/104529.htm#
- [[email protected] ~]$ docker images
- REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
- CentOS demo 8962416d1362 24 seconds ago 196.7 MB
- save
得到镜像名称
- ? https://www.jb51.net/article/104529.htm#
- [[email protected] ~]$ docker images
- REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
- CentOS latest d83a55af4e75 3 weeks ago 196.7 MB
备份镜像
- ? https://www.jb51.net/article/104529.htm#
- [[email protected] ~]$ docker save CentOS>centos_save.tar
恢复镜像
- ? https://www.jb51.net/article/104529.htm#
- [[email protected] ~]$ docker load tar
查看恢复的镜像
- ? https://www.jb51.net/article/104529.htm#
- [[email protected] ~]$ docker images
- REPOSITORY TAG IMAGE ID CREATED
- CentOS latest d83a55af4e75 3 weeks ago 196.7 MB
两者的区别:
导出后再导入 (exported-imported) 的镜像会丢失所有的历史, 而保存后再加载 (saveed-loaded) 的镜像没有丢失历史和层 (layer). 这意味着使用导出后再导入的方式, 你将无法回滚到之前的层(layer), 同时, 使用保存后再加载的方式持久化整个镜像, 就可以做到层回 滚(可以执行 docker tag <LAYER ID> <IMAGE NAME > 来回滚之前的层).
来源: http://www.bubuko.com/infodetail-3307987.html