Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 新的码头工人——壁球是怎么工作的_Docker_Dockerfile_Squash - Fatal编程技术网

Docker 新的码头工人——壁球是怎么工作的

Docker 新的码头工人——壁球是怎么工作的,docker,dockerfile,squash,Docker,Dockerfile,Squash,在Docker 1.13中添加了新的--squash参数 我现在希望能够缩小我的图片的大小,同时能够“隐藏”我的图层中的秘密文件 下面您可以看到使用和不使用--squash参数进行构建的区别 没有壁球 带壁球 现在来回答我的问题。 如果我在我的第一层中添加一个秘密文件,然后在我的第二层中使用该秘密文件,最后在第三层中删除我的秘密文件,然后使用--squash标志构建 现在有没有办法得到这个秘密文件 如果我在我的第一层中添加了一个秘密文件,那么在中使用这个秘密文件 我的第二层,最后在第三层删除

Docker 1.13中添加了新的--squash参数

我现在希望能够缩小我的图片的大小,同时能够“隐藏”我的图层中的秘密文件

下面您可以看到使用和不使用--squash参数进行构建的区别

没有壁球

带壁球

现在来回答我的问题。

如果我在我的第一层中添加一个秘密文件,然后在我的第二层中使用该秘密文件,最后在第三层中删除我的秘密文件,然后使用--squash标志构建

现在有没有办法得到这个秘密文件

如果我在我的第一层中添加了一个秘密文件,那么在中使用这个秘密文件 我的第二层,最后在第三层删除我的秘密文件 图层,然后使用--squash标志构建

现在有没有办法得到这个秘密文件

回答:您的图像不会包含机密文件

--squash
的工作原理:

构建完成后,Docker将创建一个新图像,将每个层的差异加载到单个新层中,并引用所有父层的层

换句话说:挤压时,Docker将获取一个构建生成的所有文件系统层,并将它们折叠到一个新的层中

这可以简化创建最小容器图像的过程,但在移动图像时可能会导致略高的开销(因为压缩层不能在图像之间共享)。Docker仍然缓存各个层,以加快后续构建

请注意,此功能将所有新构建的层压缩到一个层中,而不是压缩到刮擦

旁注:

Docker 1.13还支持使用
--compress
标志压缩从CLI发送到守护进程的构建上下文。这将通过减少发送的数据量来加快在远程守护进程上完成的构建


请注意,从Docker 1.13开始,此功能是实验性的。

如果您在不使用
--squash
的情况下执行此操作,是否可以通过读取文件系统上的层来访问文件?我做了一个测试,测试结果显示这些层“缺失”,其中包含机密文件,我假设这意味着无法通过挖掘这些层来访问机密文件?如果发布或分发图像,是的,有人可以进入其他层中的一层并查看机密文件。有没有注意到当你拉一个Docker图像时,你有时会看到它拉了好几层?您会注意到每个层都有一个散列ID——实际上,您可以直接使用这些散列ID从堆栈中的任何层启动容器。从那里,用户可以覆盖入口点和命令,获取一个外壳并四处查看。(或者,他们可以去查看/var/lib/docker文件夹,然后在那里翻找。)