Docker镜像的导入导出
导入/导出命令介绍
导入/导出的功能主要用于Docker
镜像的导入导出,用于迁移、备份、升级等场景,或者为隔离且没有私有镜像仓库环境添加docker镜像。
导入/导出的命令主要有下面几个:export
、import
、save
、load
,可以分为2组:
- save和load
- 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
两组命令区别
- export 命令导出的 tar 文件略小于 save 命令导出的
- export 命令是从容器(container)中导出 tar 文件,而 save 命令则是从镜像(images)中导出
- export 导出的文件再 import 回去时,无法保留镜像所有历史(即每一层layer信息,不熟悉的可以去看Dockerfile),不能进行回滚操作;而save是依据镜像来的,所以导入时可以完整保留下每一层layer信息。
最佳实践
可以依据具体使用场景来选择命令
- 若是只想备份images,使用save、load即可
- 若是在启动容器后,容器内容有变化,需要备份,则使用export、import