当前位置: 首页 > news >正文

docker export/import 和 docker save/load 的区别

Docker export/import 和 docker save/load 都是用于容器和镜像的备份和迁移,但它们有一些关键的区别:

  1. docker export/import:

    • export 作用于容器,import 创建镜像
    • 导出的是容器的文件系统,不包含镜像的元数据
    • 丢失了镜像的层级结构
    • 通常用于创建轻量级的镜像

    使用方法:

    docker export my_container > container.tar
    cat container.tar | docker import - new_image:tag
    
  2. docker save/load:

    • 作用于镜像
    • 保留完整的镜像信息,包括所有层、标签、元数据等
    • 保留镜像的层级结构
    • 文件通常比 export 大,因为包含了所有的历史信息

    使用方法:

    docker save my_image:tag > image.tar
    docker load < image.tar
    

主要区别:

  1. 操作对象:

    • export/import 操作容器
    • save/load 操作镜像
  2. 保留的信息:

    • export/import 只保留文件系统
    • save/load 保留完整的镜像信息和历史
  3. 文件大小:

    • export 通常产生较小的文件
    • save 产生较大的文件,因为包含了更多信息
  4. 用途:

    • export/import 适合创建小型基础镜像或简化已有镜像
    • save/load 适合完整备份和迁移镜像
  5. 层级结构:

    • export/import 会丢失层级结构
    • save/load 保留完整的层级结构
  6. 元数据:

    • export/import 不保留元数据(如环境变量、工作目录等)
    • save/load 保留所有元数据

选择使用哪种方法取决于你的具体需求。如果你需要完整备份镜像或在系统间迁移,使用 save/load 更合适。如果你想创建一个精简的镜像或只关心文件系统内容,export/import 可能更合适。
那么,export/import 会保留容器里的数据吗
是的,docker export/import 确实保留容器里的数据。让我详细解释一下:

  1. 数据保留:

    • docker export 会导出容器的整个文件系统,包括容器运行时产生或修改的所有数据。
    • 这包括容器启动后添加、修改或删除的所有文件。
  2. 什么被保留:

    • 容器内的所有文件和目录
    • 运行时生成的数据
    • 用户在容器内创建或修改的文件
  3. 什么不被保留:

    • 容器的元数据(如环境变量、工作目录、端口映射等)
    • 容器的历史记录
    • 容器的卷(volumes)中的数据(除非卷被挂载到容器的文件系统内)
  4. 使用场景:

    • 当你想要捕获容器在某个特定时刻的状态,包括所有运行时更改。
    • 创建一个包含特定数据或配置的新镜像。
  5. 注意事项:

    • 虽然数据被保留,但容器的运行状态(如正在运行的进程)不会被保存。
    • 导入后创建的新镜像会失去原始镜像的层结构,可能导致镜像大小增加。

示例:

# 导出正在运行的容器,包括其中的所有数据
docker export my_running_container > container_with_data.tar# 从导出的文件创建新镜像
cat container_with_data.tar | docker import - new_image:tag# 使用新镜像启动容器
docker run -it new_image:tag /bin/bash

在新容器中,你会发现原容器中的所有文件和数据都被保留下来了。

总之,docker export/import 是保留容器数据的有效方法,特别是当你需要捕获容器在特定时刻的完整状态时。但要记住,这种方法不保留容器的配置信息和镜像的层结构。

http://www.lryc.cn/news/454940.html

相关文章:

  • 明星周边销售网站开发:SpringBoot技术全解析
  • STM32+ADC+扫描模式
  • R语言绘制散点图
  • 安装最新 MySQL 8.0 数据库(教学用)
  • 微信小程序开发-配置文件详解
  • TCP/UDP初识
  • 【大数据】在线分析、近线分析与离线分析
  • 【unity进阶知识9】序列化字典,场景,vector,color,Quaternion
  • 传奇GOM引擎架设好进游戏后提示请关闭非法外挂,重新登录,如何处理?
  • OpenCV视频I/O(15)视频写入类VideoWriter之标识视频编解码器函数fourcc()的使用
  • rust log选型
  • 数据库-分库分表
  • 基于SSM的校园社团管理系统的设计 社团信息管理 智慧社团管理社团预约系统 社团活动管理 社团人员管理 在线社团管理社团资源管理(源码+定制+文档)
  • 【SVN】一文读懂Subversion(SVN)
  • nginx打包部署前端vue项目全过程【保姆级教程】
  • From SAM to CAMs
  • 【NLP自然语言处理】01-基础学习路径简介
  • ffmpeg取rtsp流音频数据保存声音为wav文件
  • 《数字图像处理基础》学习01-数字图像处理的相关基础知识
  • C#-泛型学习笔记
  • Java第二阶段---11封装---第四节 static 修饰符
  • 【C/C++】错题记录(五)
  • 关系数据库标准语言SQL(11,12)
  • Oracle 11g RAC 节点异常重启问题分析
  • vscode 中显示 pnpm : 无法加载文件 C:\Users\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本
  • C嘎嘎入门篇:类和对象番外(时间类)
  • Spring Boot项目实战教程:快速构建Web应用与RESTful API
  • OpenAI 开发者大会!实时语音功能有API了,GPT-4o支持多模态微调,上下文cache功能上线
  • 解决ros2 rviz Fixed Frame No TF data问题
  • Python数据分析篇--NumPy--进阶