docker存出和载入镜像、导出和导入容器

结论:通过测试,存出镜像后再载入 和 导出容器后再导入 结果是一样的。

如果容器内项目有修改,并且不需要历史记录,选择

两个方法的区别:

  1. 镜像和容器 导出和导入的区别
    1)容器(export 导出、import导入) 是将当前容器 变成一个新的镜像,导入时会丢失镜像所有的历史,所以无法进行回滚操作(docker tag <LAYER ID> <IMAGE NAME>);
    2)镜像(save保存、load加载) 是复制的过程,没有丢失镜像的历史,可以回滚到之前的层(layer)。(查看方式:docker images --tree)
  2. save 和 export区别
    1)save 保存镜像所有的信息-包含历史
    2)export 只导出当前的信息
  3. 镜像导出的 tar 文件比容器导出文件大。

使用场景的区别

  1. 容器内项目有修改
    不需要历史记录的、想要体积小、又快速的,选择容器导出;反之选择镜像导出,镜像导出需先将容器commit成新的镜像,才能使用镜像导出。
  2. 容器内项目无修改
    选择镜像导出。
  • 若是只想备份images,使用save、load即可
  • 若是在启动容器后,容器内容有变化,需要备份,则使用export、import。(或者将容器commit成新的镜像,在使用镜像导出)

一、存出和载入镜像

存出镜像

如果要导出镜像到本地文件,可以使用 docker save 命令。实际测试证明:镜像导出的名字不管是ubuntu_14.04.tar、还是ubuntu_14.04,即使文件后缀名不同或者没有,它们导出的体积大小也是固定的。

$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu              14.04               c4ff7513909d        5 weeks ago         225.4 MB
...
$sudo docker save -o ubuntu_14.04.tar ubuntu:14.04

载入镜像

可以使用 docker load 从导出的本地文件中再导入到本地镜像库,例如

$ sudo docker load --input ubuntu_14.04.tar

$ sudo docker load < ubuntu_14.04.tar

这将导入镜像以及其相关的元数据信息(包括标签等)。

 

二、导出和导入容器

导出容器

如果要导出本地某个容器,可以使用 docker export 命令。

$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
7691a814370e        ubuntu:14.04        "/bin/bash"         36 hours ago        Exited (0) 21 hours ago                       test
$ sudo docker export 7691a814370e > ubuntu.tar

这样将导出容器快照到本地文件。

导入容器快照

可以使用 docker import 从容器快照文件中再导入为镜像,例如

$ cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0
$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
test/ubuntu         v1.0                9d37a6082e97        About a minute ago   171.3 MB

此外,也可以通过指定 URL 或者某个目录来导入,例如

$sudo docker import http://example.com/exampleimage.tgz example/imagerepo

*注:用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。

 

注意:

Docker执行错误报错--Error response from daemon: No command specified,意思是需要跟一条命令

docker run -p 80:80 -it test/ubuntu:v1.0 /bin/bash

参考:http://wiki.jikexueyuan.com/project/docker-technology-and-combat/image.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值