docker导入导出容器

本文详细介绍了如何使用dockerexport将容器文件系统保存为tar包,以及如何使用dockerimport导入该tar包创建镜像。还对比了dockerexport与dockersave的区别。
摘要由CSDN通过智能技术生成

要求学习者参照示例完成将busyboxContainer容器的文件系统保存为一个tar包,通过该tar包导入一个busybox:v1.0镜像。

相关知识

将“容器的文件系统”保存到tar包

docker export是将“容器的文件系统”导出为一个tar包。注意是操作的对象是容器!它的具体语法如下:

  1. docker export [OPTIONS] CONTAINER

其中:

  • docker exportDocker将容器导出到tar包的命令关键词;
  • OPTIIONS: 命令选项,-o指定写到一个文件中,而不是标准输出流中;
  • Container: 需要导出到tar包的容器。

例如,将容器container1的“文件系统”保存到tar包,对应的语句如下:

  1. docker export container1 > container1.tar
  2. 或者
  3. docker export container1 -o container1.tar
从tar包导入一个镜像

docker import使用docker export导出的tar包加载为一个镜像。它的具体语法如下:

  1. docker import [OPTIONS] 文件|URL|- [镜像名]

其中:

  • docker importDockertar包加载镜像的命令关键词;
  • OPTIIONS: 命令选项;
  • 文件|URL|: 指定docker import的对象,可以是文件或者某个URL
  • [镜像名]: 以<仓库名>:<标签>的方式来指定。

例如,container1.tar中加载镜像,镜像名为test:v1.0,对应的语句如下:

  1. cat container1.tar | docker import - test:v1.0
实例

在本机以ubuntu镜像为基础创建了一个容器,并在容器的/dir1目录下创建了1.txt2.txt两个文件,然后将改容器导出为tar文件。

  1. [root@localhost step2]# docker run -it ubuntu /bin/bash
  2. root@a2864c3ed14f:/# touch /dir1/1.txt
  3. root@a2864c3ed14f:/# touch /dir1/2.txt
  4. [root@localhost tempdir]# docker export a286 > ubuntu-test.tar
  5. [root@localhost tempdir]# ls
  6. ubuntu-test.tar

执行cat ubuntu-test.tar | docker import - ubuntu:test命令,将导出的tar(ubuntu-test.tar)导入成一个镜像,镜像名为ubuntu:test。然后使用ubuntu:test创建一个容器,查看容器中/dir1的内容,发现1.txt2.txt都存在。

  1. [root@localhost tempdir]# cat ubuntu-test.tar | docker import - ubuntu:test
  2. sha256:34be0173049d9f177d84117a786bc02de18c9c84137ea9c61288810c0917c671
docker export和docker save的区别

首先,两者的操作对象不同。docker save是将一个镜像保存为一个tar包,而docker export是将一个容器快照保存为一个tar包。

然后,docker export导出的容器快照文件将丢弃所有的历史记录和元数据信息,即仅保存容器当时的快照状态;而docker save保存的镜像存储文件将保存完整记录,体积也要大。下图就能够很好的说明,ubuntu:test仅仅占97.8MBubuntu:latest却占了120MB

  1. [root@localhost step2]# docker images ubuntu
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. ubuntu test 34be0173049d 5 seconds ago 97.8 MB
  4. ubuntu latest 14f60031763d 2 weeks ago 120 MB
  5. [root@localhost tempdir]# docker run ubuntu:test ls /dir1
  6. 1.txt
  7. 2.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值