docker save和docker export有什么区别


本文摘自PHP中文网,作者V,侵删。

首先,我们来分别说明一下docker save和docker export:

docker save

docker的命令行接口设计得很优雅,很多命令的帮助直接在后面加--help就可以查看。

docker save的帮助如下:

1

2

3

4

5

6

>docker save --help

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

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

Options:

      --help            Print usage

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

从命令行帮助可以看出,docker save是用来将一个或多个image打包保存的工具。

例如我们想将镜像库中的postgres和mongo打包,那么可以执行:

1

docker save -o images.tar postgres:9.6 mongo:3.4

打包之后的images.tar包含postgres:9.6和mongo:3.4这两个镜像。

虽然命令行参数要求指定image,实际上也可以对container进行打包,例如:

1

2

3

4

5

6

7

8

>docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES

3623943d369f        postgres:9.6        "docker-entrypoint..."   3 hours ago         Up 3 hours          5432/tcp            postgres

>docker save -o b.tar postgres

>docker save -o c.tar postgres:9.6

>ls -al

-rwxrwxrwx 1 root root 277886464 8月  26 14:40 b.tar

-rwxrwxrwx 1 root root 277886464 8月  26 14:41 c.tar

通过以上命令可以看到,b.tar和c.tar是完全一模一样的。这说明,docker save如果指定的是container,docker save将保存的是容器背后的image。

将打包后的镜像载入进来使用docker load,例如:

1

docker load -i images.tar

上述命令将会把postgres:9.6和mongo:3.4载入进来,如果本地镜像库已经存在这两个镜像,将会被覆盖。

docker save的应用场景是,如果你的应用是使用docker-compose.yml编排的多个镜像组合,但你要部署的客户服务器并不能连外网。这时,你可以使用docker save将用到的镜像打个包,然后拷贝到客户服务器上使用docker load载入。

docker export

照例查看下docker export的帮助:

1

2

3

4

5

6

>docker export --help

Usage:  docker export [OPTIONS] CONTAINER

Export a container's filesystem as a tar archive

Options:

      --help            Print usage

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

从帮助可以看出,docker export是用来将container的文件系统进行打包的。例如:

1

docker export -o postgres-export.tar postgres

docker export需要指定container,不能像docker save那样指定image或container都可以。

将打包的container载入进来使用docker import,例如:

1

docker import postgres-export.tar postgres:latest

从上面的命令可以看出,docker import将container导入后会成为一个image,而不是恢复为一个container。

另外一点是,docker import可以指定IMAGE[:TAG],说明我们可以为镜像指定新名称。如果本地镜像库中已经存在同名的镜像,则原有镜像的名称将会被剥夺,赋给新的镜像。原有镜像将成为孤魂野鬼,只能通过IMAGE ID进行操作。

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

docker save和docker export的区别

  • docker save保存的是镜像(image),docker export保存的是容器(container);

  • docker load用来载入镜像包,docker import用来载入容器包,但两者都会恢复为镜像;

  • docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。

推荐教程:docker

以上就是docker save和docker export有什么区别的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

如何禁止Docker开机启动

怎么从Docker中copy文件到本地

Docker下entrypoint和cmd的区别是什么?

Docker容器日志在哪个目录

Docker有什么作用?

Docker常用命令

怎么更换Docker的存储目录

Docker启动nginx后无法访问怎么办

如何关闭Docker容器里的进程

Docker无法删除镜像怎么解决

更多相关阅读请进入《Docker》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...