Docker镜像的导入导出

导入/导出命令介绍

导入/导出的功能主要用于Docker镜像的导入导出,用于迁移、备份、升级等场景,或者为隔离且没有私有镜像仓库环境添加docker镜像。

导入/导出的命令主要有下面几个:exportimportsaveload,可以分为2组:

  1. save和load
  2. export和import

下面分别看看他们的用法和区别

save和load

命令用法

sian@ -> ~/manifests$ docker save --help

Usage:	docker save [OPTIONS] IMAGE [IMAGE...]

Save one or more images to a tar archive (streamed to STDOUT by default)

Options:
  -o, --output string   Write to a file, instead of STDOUT

  
sian@ -> ~/manifests$ docker load --help

Usage:	docker load [OPTIONS]

Load an image from a tar archive or STDIN

Options:
  -i, --input string   Read from tar archive file, instead of STDIN
  -q, --quiet          Suppress the load output

导出时使用-o或者输出重定向>将本地镜像仓库中的镜像输出保存到文件中。

导入时使用-i或者输入重定向<将镜像文件导入到本地镜像仓库。

实例展示

### 输出
docker save -o nginx.tar nginx:latest 
或
docker save > nginx.tar nginx:latest

### 输入
docker load -i nginx.tar
或
docker load < nginx.tar

export和import

命令用法

sian@ -> ~/manifests$ docker import --help

Usage:	docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

Import the contents from a tarball to create a filesystem image

Options:
  -c, --change list      Apply Dockerfile instruction to the created image
  -m, --message string   Set commit message for imported image

sian@ -> ~/manifests$ docker export --help

Usage:	docker export [OPTIONS] CONTAINER

Export a container's filesystem as a tar archive

Options:
  -o, --output string   Write to a file, instead of STDOUT

实例展示

### export
docker export -o nginx-test.tar nginx-test

### import
docker import nginx-test.tar nginx:imp
或
cat nginx-test.tar | docker import - nginx:imp

两组命令区别

  1. export 命令导出的 tar 文件略小于 save 命令导出的
  2. export 命令是从容器(container)中导出 tar 文件,而 save 命令则是从镜像(images)中导出
  3. export 导出的文件再 import 回去时,无法保留镜像所有历史(即每一层layer信息,不熟悉的可以去看Dockerfile),不能进行回滚操作;而save是依据镜像来的,所以导入时可以完整保留下每一层layer信息。

最佳实践

可以依据具体使用场景来选择命令

  1. 若是只想备份images,使用save、load即可
  2. 若是在启动容器后,容器内容有变化,需要备份,则使用export、import
原文地址:https://www.cnblogs.com/vinsent/p/12119310.html