新的 Docker --squash 是如何工作的
How does the new Docker --squash work
在 Docker 1.13 中添加了新的 --squash 参数。
我现在希望减小图像的大小并能够“隐藏”图层中的秘密文件。
您现在可以在下面看到使用和不使用 --squash 参数进行构建的区别。
没有南瓜
有南瓜
现在回答我的问题。
如果我在我的 first 层中添加一个秘密文件,然后在我的 second 层中使用秘密文件,最后删除我的秘密文件在 third 层,然后使用 --squash 标志构建。
现在是否有任何方式获取秘密文件?
If I add a secret file in my first layer, then use the secret file in
my second layer, and the finally remove my secret file in the third
layer, and then build with the --squash flag.
Will there be any way now to get the secret file?
回答:您的图像不会有秘密文件。
--squash
的工作原理:
构建完成后,Docker 创建一个新图像,将每个层的差异加载到一个新层中,并引用所有父层。
换句话说:压缩时,Docker 会将构建生成的所有文件系统层合并为一个新层。
这可以简化创建最小容器图像的过程,但在移动图像时可能会导致开销略高(因为压缩层无法再在图像之间共享)。 Docker 仍然缓存各个层以使后续构建更快。
请注意,此功能会将所有新建层压缩为一个层,而不是从头开始压缩。
旁注:
Docker 1.13 还支持使用 --compress
标志压缩从 CLI 发送到守护进程的构建上下文。这将通过减少发送的数据量来加快在远程守护进程上完成的构建。
请注意,从 Docker 1.13 开始,此功能是实验性的。
在 Docker 1.13 中添加了新的 --squash 参数。
我现在希望减小图像的大小并能够“隐藏”图层中的秘密文件。
您现在可以在下面看到使用和不使用 --squash 参数进行构建的区别。
没有南瓜
有南瓜
现在回答我的问题。
如果我在我的 first 层中添加一个秘密文件,然后在我的 second 层中使用秘密文件,最后删除我的秘密文件在 third 层,然后使用 --squash 标志构建。
现在是否有任何方式获取秘密文件?
If I add a secret file in my first layer, then use the secret file in my second layer, and the finally remove my secret file in the third layer, and then build with the --squash flag.
Will there be any way now to get the secret file?
回答:您的图像不会有秘密文件。
--squash
的工作原理:
构建完成后,Docker 创建一个新图像,将每个层的差异加载到一个新层中,并引用所有父层。
换句话说:压缩时,Docker 会将构建生成的所有文件系统层合并为一个新层。
这可以简化创建最小容器图像的过程,但在移动图像时可能会导致开销略高(因为压缩层无法再在图像之间共享)。 Docker 仍然缓存各个层以使后续构建更快。
请注意,此功能会将所有新建层压缩为一个层,而不是从头开始压缩。
旁注:
Docker 1.13 还支持使用 --compress
标志压缩从 CLI 发送到守护进程的构建上下文。这将通过减少发送的数据量来加快在远程守护进程上完成的构建。
请注意,从 Docker 1.13 开始,此功能是实验性的。