优米格
分享有营养的

docker命令save/export/load/import的含义、区别及使用示例

BraUndress.png

本文盘点docker导入导出命令的使用。

docker.jpg

1. 各操作含义

  • docker save:将一个镜像导出为文件,保存的是该镜像的所有历史记录;
  • docker export:将一个容器导出为文件,保存的是容器当时的状态,即容器快照;
  • docker load:将镜像存储文件导入到本地镜像库;
  • docker import:导入一个容器快照到本地镜像库;

2. 区别

docker save和docker export之间的区别:

1)docker save是将镜像保存为tar包,且会保存该镜像的父层、标签、所有历史等信息;docker export是将容器文件系统保存为tar包,保存的是容器当时的状态(快照);
2) docker save可以同时指定多个镜像名称;docker export只能指定一个容器名称;
3)docker save保存的镜像文件tar包使用docker load命令加载还原;docker export保存的容器快照tar包使用docker import命令导入还原;
4)docker save保存的tar包文件通常比docker export导出的文件要大;

docker load和docker import之间的区别:

1)docker load将镜像存储文件导入到本地镜像库;docker import将容器快照文件导入到本地镜像库;
2)docker load不能指定url;而docker import可以指定url来进行导入;

3. 命令使用示例

下面对命令的使用进行说明:

3.1 docker save

命令

docker save [选项] IMAGE [IMAGE...]

说明

保存一个或多个镜像到一个tar包(默认将流转为标准输出)

选项

-o, --output string   写入到文件而不是标准输出

示例:

[root@localhost ~]# docker image ls -a
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
127.0.0.1:5000/tomcat   latest              ca9e2fccef98        3 months ago        463MB
tomcat                  latest              ca9e2fccef98        3 months ago        463MB
registry                latest              2e2f252f3c88        5 months ago        33.3MB
[root@localhost ~]# docker save 127.0.0.1:5000/tomcat > ./tomcat_save.tar
[root@localhost ~]# ll
total 466420
-rw-------. 1 root root      1652 Nov  4 22:43 anaconda-ks.cfg
-rw-r--r--. 1 root root      1700 Nov  4 22:59 initial-setup-ks.cfg
-rw-r--r--. 1 root root 477604864 Feb 19 10:35 tomcat_save.tar
drwxr-xr-x. 2 root root         6 Nov  5 11:00 webapps

3.2 docker export

命令

docker export [选项] CONTAINER

说明

保存一个容器文件系统到一个tar包

选项

-o, --output string   写入到文件而不是标准输出

示例:

[root@localhost ~]# docker container ls -a
CONTAINER ID        IMAGE                   COMMAND             CREATED             STATUS              PORTS                    NAMES
928b7b741769        127.0.0.1:5000/tomcat   "catalina.sh run"   6 seconds ago       Up 5 seconds        0.0.0.0:8080->8080/tcp   gallant_kirch
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# docker export 928b7b741769 > ./tomcat_export.tar
[root@localhost ~]# ll
total 923216
-rw-------. 1 root root      1652 Nov  4 22:43 anaconda-ks.cfg
-rw-r--r--. 1 root root      1700 Nov  4 22:59 initial-setup-ks.cfg
-rw-r--r--. 1 root root 467757056 Feb 19 10:50 tomcat_export.tar
-rw-r--r--. 1 root root 477604864 Feb 19 10:35 tomcat_save.tar
drwxr-xr-x. 2 root root         6 Nov  5 11:00 webapps

3.3 docker load

命令

docker load [选项]

说明

从tar包或标准输入加载一个镜像

选项

-i, --input string   从tar包文件读取而不是标准输入
-q, --quiet          不输出信息

示例:

[root@localhost ~]# ll
total 923216
-rw-------. 1 root root      1652 Nov  4 22:43 anaconda-ks.cfg
-rw-r--r--. 1 root root      1700 Nov  4 22:59 initial-setup-ks.cfg
-rw-r--r--. 1 root root 467757056 Feb 19 10:50 tomcat_export.tar
-rw-r--r--. 1 root root 477604864 Feb 19 10:35 tomcat_save.tar
drwxr-xr-x. 2 root root         6 Nov  5 11:00 webapps
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# docker load < ./tomcat_save.tar 
Loaded image: 127.0.0.1:5000/tomcat:latest

3.4 docker import

命令

docker import [选项] file|URL|- [REPOSITORY[:TAG]]

说明

从tar包内容创建一个镜像。

选项

-c, --change list      应用Dockerfile说明从而创建镜像;
-m, --message string   为导入的镜像设置commit信息;

示例:

[root@localhost ~]# ll
total 923216
-rw-------. 1 root root      1652 Nov  4 22:43 anaconda-ks.cfg
-rw-r--r--. 1 root root      1700 Nov  4 22:59 initial-setup-ks.cfg
-rw-r--r--. 1 root root 467757056 Feb 19 10:50 tomcat_export.tar
-rw-r--r--. 1 root root 477604864 Feb 19 10:35 tomcat_save.tar
drwxr-xr-x. 2 root root         6 Nov  5 11:00 webapps
[root@localhost ~]# cat ./tomcat_export.tar |docker import - 127.0.0.1:5000/tomcat:latest
sha256:f035bbb7209cbecb2dec836efd841e120934b177bd05f7da1112450088263cd6
[root@localhost ~]# docker image ls -a
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
127.0.0.1:5000/tomcat   latest              f035bbb7209c        13 seconds ago      453MB
tomcat                  latest              ca9e2fccef98        3 months ago        463MB
127.0.0.1:5000/tomcat   <none>              ca9e2fccef98        3 months ago        463MB
registry                latest              2e2f252f3c88        5 months ago        33.3MB

4. 帮助

可以使用如下命令查看详细帮助:

docker save --help
docker export --help
docker load --help
docker import --help

参考文章:

  1. What is the difference between import and load in Docker?
  2. Flatten a Docker container or image
  3. docker load与docker import
  4. 详解docker save-load export-import区别
赞(1)
未经允许禁止转载:优米格 » docker命令save/export/load/import的含义、区别及使用示例

评论 抢沙发

合作&反馈&投稿

商务合作、问题反馈、投稿,欢迎联系

广告合作侵权联系