运维
PythonJava前端数据库
Docker
Docker
  • Docker简介
  • 基本概念
    • 镜像
    • 容器
    • 仓库
  • 安装
  • 使用镜像
    • 获取镜像
    • 列出镜像
    • 删除镜像
    • 导入和导出
  • Dockerfile
    • 构建镜像
    • 多阶段构建
    • 构建多种系统架构支持的镜像
    • Dockerfile 命令介绍
      • COPY 复制文件
      • ADD 更高级的复制
      • CMD 容器启动命令
      • ENTPYPOINT 入口点
      • ENV 设置环境变量
      • ARG 构建参数
      • VOLUME 匿名卷
      • USER 指定当前用户
      • EXPOSE 暴露端口
      • WORKDIR 工作目录
      • SHELL 指令
      • LABEL 为镜像添加源数据
      • ONBUILD 为他人作嫁衣裳
  • 数据管理
    • 数据卷
    • 挂载主机目录
  • 操作容器
    • 启动、停止和删除
    • 进入容器
    • 导入和导出
    • 重启策略
  • 网络配置
    • 基本网络配置
    • 高级网络配置
  • Docker Buildx
    • 使用buildx构建镜像
    • 使用buildx构建多种系统架构镜像
  • Docker Compose
    • 简介
    • 简单使用
    • 多个配置文件
    • Compose网络配置
    • 控制启动服务启动顺序
    • 命令说明
  • Kubernetes
由 GitBook 提供支持
在本页
  • 通过容器
  • 导出
  • 导入
  • 通过镜像
  • 导出 docker save
  • 导入 docker load
  • 差异

这有帮助吗?

  1. 使用镜像

导入和导出

上一页删除镜像下一页Dockerfile

最后更新于2个月前

这有帮助吗?

Docker 导出和导入镜像的方式有两种,一种是通过容器,一种是通过镜像。

通过容器

导出

docker export 容器ID > image.tar

导入

docker import 容器名 < image.tar

通过镜像

导出

docker image save [OPTIONS] IMAGE [IMAGE...]
# or
docker save [OPTIONS] IMAGE [IMAGE...]
选项
描述

-o, --output

写入文件,而不是 STDOUT

仅保存给定的平台变体。格式为os[/arch[/variant]](例如linux/amd64)

例如:

# 导出nginx
docker save -o nginx.tar nginx

# 可以同时将多个镜像打包一个文件
docker save -o images.tar nginx alpine

# 将所有镜像导出到一个压缩包
docker save -o all_images.tar $(docker images -q)

# 导出所有镜像,每个镜像单独一个压缩包
docker images -q | xargs -I {} docker save -o {}.tar {}

# 使用 gzip 将图像保存为 tar.gz 文件,您可以使用 gzip 保存映像文件并使备份更小。
docker save nginx:2.1 | gzip > gninx.tar.gz
docker image load [OPTIONS]
选项
描述

从 tar 存档文件读取,而不是从 STDIN 读取

API 1.48+ 仅加载给定的平台变体。格式为os[/arch[/variant]](例如linux/amd64)

-q, --quiet

抑制负载输出

差异

两种方法不能混用,通过 docker export 导出的镜像只能通过 docker import 导入。通过 docker save 导出的镜像只能通过docker load导入。

  1. 文件大小不同

    1. docker export导出的镜像文件体积小于save保存的文件体积

  2. 是否可以对镜像重命名

    1. docker import可以为在载入镜像的时候为镜像指定新名称。

    2. docker save不能在载入镜像的时候为镜像指定新名称。

  3. 是否可以同时将多个镜像打包到一个文件中

    1. docker export不支持将多个镜像打包到一个文件中。

    2. docker save支持将多个镜像打包到一个文件中。

  4. 是否包含历史镜像

    1. docker export是根据容器拿到的镜像,再导入时会丢失镜像的所有历史记录和元数据信息,仅保存容器当前的快照状态,所以无法进行回滚操作。

    2. docker sava保存的镜像,没有丢失镜像的历史,可以回滚到之前的层(layer)。

  5. 应用场景不同

    1. docker export的应用场景是主要用来制作基础镜像,例如我们从一个 ubuntu 镜像启动一个容器,然后安装一些软件和进行一些设置后,使用docker export保存为一个基础镜像,然后把这个镜像给其它人使用,比如作为基础的开发环境。

    2. docker save的应用场景是克隆原始镜像,例如服务器不能连外网或者因网络问题下载不了镜像,我们就可以使用docker save将需要用到的镜像打包,然后拷贝到服务器上通过docker load载入。

导入

docker save
docker load
--platform
-i, --input
--platform