Docker只保存非公共图层

wut*_*aer 10 docker

我可以导出图像

docker save -o <save image to path> <image name>
Run Code Online (Sandbox Code Playgroud)

但这将打包所有图层,文件很大

是否有可能仅打包不公开的图层,因此只导出与最后一个公共图层的差异?

brt*_*ury 2

docker -save-last-layer命令行实用程序结合起来docker build --squash正是为了完成此任务。

它仅导出指定 docker 镜像的最后一层。

它的工作原理是在 docker 镜像中使用 docker 守护进程的修​​补版本,该镜像可以访问主机上的镜像。因此,它不需要docker save像答案一样在使用之前进行完整的操作undocker。这使得它对于大型基础图像具有更高的性能。

典型用法很简单,如下所示:

pip install d-save-last

docker build --t myimage --squash .
d-save-last myimage -o ./myimage.tar
Run Code Online (Sandbox Code Playgroud)