主题
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 保存/加载镜像