Skip to content

Docker 导入导出

简介

  • docker save保存的是镜像(image),docker export保存的是容器(container);
  • docker load用来载入镜像包,docker import用来载入容器,但两者都会恢复为镜像;
  • docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。

导出

比如我本机上有一个 switotor 的镜像,容器ID为 de932a8e3fbe ,使用如下命令分别导出镜像和容器:

  • docker save -o switotor.tar switotor
  • docker export -o switotor.tar de932a8e3fbe

区别

容器压缩包 是很典型的Linux目录结构,还找到当初build时被ADD进的源码文件,而镜像压缩包则只有一层,没有文件目录,只有一层文件,而且文件名是sha256编码,所以不能直接解压,需要用docker load命令导入

容器压缩包

容器压缩包

镜像压缩包

镜像压缩包

导入

  • docker load -i /data/switolor.tar 由于在使用save导出时使用了-o选项保留其配置信息,所以需要使用docker load -i选项来恢复镜像。

  • docker import /data/switolor.tar switolor:latest docker export 会导出容器的文件系统,但不会保留容器的元数据,所以需要手动执行ENTRYPOINT内的命令来启动容器, 比如:我要容器目录的/data文件夹下的switolor.jar作为ENTRYPOINT

docker run -d --name switolor --restart=always -p 8080:8080 switolor:latest java -jar /data/switolor.jar

docker commit

如果你已经运行了一个容器,并希望将其保存为一个新的镜像,既要保留容器的元数据,又要导出容器的文件系统,那么可以使用 docker commit 命令。

docker commit -c "ENTRYPOINT [\"java\", \"-jar\", \"switolor.jar\"]" container_id switolor:new_tag

再使用docker save 和 docker load 保存/加载镜像

粤ICP备20009776号