type
slug
category
status
date
summary
tags
icon
password
AI 摘要
服务器需要迁移,GitLab,AndroidCI 等各个 Docker 都需要迁移过去
我看有两个命令,这里比较一下哪个命令更合适
容器的导出导入 export 和 import
导出
先使用 docker ps 找到正在运行的 容器,这里以 nginx 为例
导入
注意看镜像的名字是导入时手动赋予的 nginx1.19.0_export
镜像的导出导入 save 和 load
导出
先使用 docker images 找到要导出的 镜像,这里以 nginx 为例
导入
发现了什么,layer,这个 load 会恢复 layer,记下后边讲
新的问题出现了
名字是 none ,tag 也是 none,这是因为导出的时候用的 IMAGE ID
没关系有办法补救的
好了,恢复了,通过观察发现 IMAGE ID 都没有变
IMAGEID 是镜像的 SHA-256 ,所以通过 save load 会保留所有信息,layer 层也都存在,方便之后修改镜像后回滚
多镜像导出
补充一下如何不出现 none,就是带名字tag 导出
多镜像导出
导入还是用 load
总结
1. 导出对象不同:
◦
docker export
用于导出容器的文件系统为一个压缩包文件。它不会保留容器的历史和元数据,只导出最终的文件系统视图。
◦ docker save
用于导出一个或多个镜像为一个压缩包文件。它会保留镜像的历史和元数据。
2. 导出格式不同:
◦ docker export
导出的文件是一个简单的压缩包,可以使用标准工具(如 tar)进行解压。
◦ docker save
导出的文件是一个特殊的 Docker 镜像格式,只能通过 docker load
命令导入。
3. 用途不同:
◦ docker export
通常用于将容器的文件系统导出为一个备份文件,或者在不同环境之间迁移容器文件系统。
◦ docker save
通常用于备份和迁移整个镜像,包括镜像的所有层和元数据。如果你要迁移服务器,推荐使用
docker save
来导出需要迁移的镜像。因为:1. 导出的文件包含了镜像的所有信息,在新环境中可以通过
docker load
直接恢复镜像。
2. 导出的文件体积更小,因为它只包含镜像层而不包含容器运行时的写入层。
3. 可以方便地选择导出特定的镜像,而不必导出所有镜像。所以,对于服务器迁移,使用
docker save
来导出所需的镜像是最佳选择。如果只需要备份容器的文件系统,可以使用 docker export
。📎 参考文章
- 作者:YunFei
- 链接:https://blog.yunfei.online/article/docker-save-load
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。