Docker只保存非公共图层

时间:2016-08-25 10:22:30

标签: docker

我可以用

导出图像
docker save -o <save image to path> <image name>

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

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

2 个答案:

答案 0 :(得分:3)

您可以尝试undocker。该工具可以将Docker镜像的全部或部分图层提取到本地文件系统中。您可以提取一个或多个特定图层:

$ docker save busybox |
  undocker -vi -o busybox -l ea13149945cb6b1e746bf28032f02e9b5a793523481a0a18645fc77ad53c4ea2
INFO:undocker:extracting image busybox (4986bf8c15363d1c5d15512d5266f8777bfba4974ac56e3270e7760f6f0a8125)
INFO:undocker:extracting layer ea13149945cb6b1e746bf28032f02e9b5a793523481a0a18645fc77ad53c4ea2

当然,它不会自动整理公开可用的图层,但您可以从这里开始,这是原始作者的工具intro article

答案 1 :(得分:1)

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