导出Docker镜像或者容器

说起 Docker 当然是离不开镜像和容器,有时候我们需要做一些镜像和容器的备份,便于后期恢复使用,也可以提供给其它人使用,那么备份镜像和容器涉及到哪些命令,又是怎么使用的呢?本文介绍一下Docker镜像的导入导出,用于迁移、备份、升级等场景。

EXPORT命令

1
docker export [options] container

我们输入 docker export --help 来看一下具体用法,如下图:

示例:

1
docker export -o mysql8.tar mysql8

其中 -o 表示输出到文件,mysql8.tar为目标文件,mysql8是源容器名(name

IMPORT命令

1
docker import [options] file |URL| - [REPOSITORY[:TAG]]

我们输入 docker import --help 来看一下具体用法,如下图:

示例:

1
2
3
docker import mysql8.tar  mysql:1.0

cat mysql8.tar | docker import - mysql8:1.0

SAVE命令

1
docker save [options] images [images...]

我们输入 docker save --help 来看一下具体用法,如下图:

示例:

1
2
3
docker save -o mysql.tar mysql:latest

docker save > mysql.tar mysql:latest

使用以上两种方式都可以,其中 -o> 表示输出到文件,mysql.tar 为目标文件,mysql:latest 是源镜像名(name:tag

LOAD命令

1
docker load [options]

我们输入 docker load --help 来看一下具体用法,如下图:

示例:

1
2
3
docker load -i mysql.tar

docker load < mysql.tar

其中 -i< 表示从文件输入。会成功导入镜像及相关元数据,包括 tag 信息

区别

  1. export 命令导出的tar文件略小于 save 命令导出的

  2. export 命令是从容器(container)中导出 tar 文件,而 save 命令则是从镜像(images )中导出

  3. 基于第二点,export 导出的文件再 import 回去时,无法保留镜像所有历史(即每一层 layer 信息,不熟悉的可以去看 Dockerfile),不能进行回滚操作;而 save 是依据镜像来的,所以导入时可以完整保留下每一层 layer 信息。

如何选择

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

  • 若是只想备份 images,使用 saveload 即可
  • 若是在启动容器后,容器内容有变化,需要备份,则使用 exportimport

转载: https://blog.csdn.net/ncdx111/article/details/79878098

原文作者: dgb8901,yinxing

原文链接: https://www.itwork.club/2021/09/28/docker-export-images/

版权声明: 转载请注明出处

为您推荐

体验小程序「简易记账」

关注公众号「特想学英语」