架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2546|回复: 1

Docker 的 save 和 export 命令的区别

[复制链接]
发表于 2021-11-27 14:33:20 | 显示全部楼层 |阅读模式
Docker是基于镜像的。镜像类似于已经包含了文件、配置和安装好的程序的虚拟机镜像。同样的,你可以像启动虚拟机一样启动多个镜像实例。运行中的镜像称为容器。你可以修改容器(比如删除一个文件),但这些修改不会影响到镜像。不过,你使用docker commit <container-id> <image-name>命令可以把一个正在运行的容器变成一个新的镜像。

导出(Export)

Export命令用于持久化容器(不是镜像)。所以,我们就需要通过以下方法得到容器ID:

接着执行导出:

QQ截图20211127142235.jpg

然后,再另外一台服务器,docker import 用来加载导出的文件。

官方文档地址:https://docs.docker.com/engine/reference/commandline/export/

保存(Save)

Save命令用于持久化镜像(不是容器)。所以,我们就需要通过以下方法得到镜像名称:

执行保存:

QQ截图20211127142529.jpg

然后,再另外一台服务器,docker load 用来加载保存的文件。

官方文档地址:https://docs.docker.com/engine/reference/commandline/save/

总结区别

export 导出针对的是容器应用,并且会丢失所有的层,导出的文件结构如下:

QQ截图20211127143218.jpg

save 导出针对的是镜像,文件结构是一层层的,如下图:

QQ截图20211127143241.jpg

导出后再导入(exported-imported)的镜像会丢失所有的历史,而保存后再加载(saveed-loaded)的镜像没有丢失历史和层(layer)。这意味着使用导出后再导入的方式,你将无法回滚到之前的层(layer),同时,使用保存后再加载的方式持久化整个镜像,就可以做到层回滚(可以执行docker tag <LAYER ID> <IMAGE NAME>来回滚之前的层)。

思考:docker 第一个镜像应该就是通过导入导出原理制作出来的吧,将系统文件压缩成 tar 格式,然后再通过 import 命令导入。





上一篇:LdapErr: DSID-0C09042A, comment: AcceptSecurityContext error, data 52e, v3839
下一篇:【实战】基于 Docker php:5.6.40-fpm 镜像安装 GD 扩展
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2022-2-27 16:52:12 | 显示全部楼层
保存镜像



加载镜像

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-20 18:33

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表