docker 镜像打包
以迁移 release 机器的 clang 环境为例
- 从虚拟机的根目录进行打包,排除部分不需要的目录
sudo tar -cvpzf system.tar --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/media --exclude=/pack --exclude=/home --exclude=/tmp --exclude=/data --exclude=/var/lib/docker /
- 导入文件到 docker 镜像中
比如将系统包导入到镜像 clang-check-test 中
docker import system.tar clang-check-test
- 运行镜像即可
docker run -it commit clang-check-test bash
扩展知识
docker load 与 docker import
相同点
都是将一个文件导入成镜像
不同点
- 两者的区别在于容器快照将会丢弃所有的历史记录和元数据信息,而镜像存储文件将保存完整记录,体积也会更大。此外从容器快照文件导入时,也可以重新指定标签等元数据。
- Import 支持导入外部系统的文件结构目录
docker save 与 docker export
相同点
都是保存成一个文件,用于迁移
不同点
- 将一个镜像导出为文件,再使用
docker load命令将文件导入为一个镜像,会保存该镜像的的所有历史记录。比docker export命令导出的文件大,很好理解,因为会保存镜像的所有历史记录。 docker export container_id:将一个容器导出为文件,再使用docker import命令将容器导入成为一个新的镜像,但是相比docker save命令,容器文件会丢失所有元数据和历史记录,仅保存容器当时的状态,相当于虚拟机快照。