如何使docker层变为单层

如何使docker层变为单层,docker,artifactory,Docker,Artifactory,Docker图像是用多层创建的,我想把它转换成单层。有没有Docker build命令来实现这一点?我在谷歌上搜索过,但找不到任何东西,没有命令来实现这一点,而且单层图像违背了docker的设计理念。这说明了docker图像具有多个层的原因。简而言之,图像层是Docker如此轻量级的原因之一。当您更改Docker映像时,例如当您将应用程序更新为新版本时,将生成一个新层并仅替换它更新的层。此外,即使您的映像只有一个层,当您使用该映像创建容器时,Docker仍会在映像层的顶部添加一个薄的可读写容器层

Docker图像是用多层创建的,我想把它转换成单层。有没有Docker build命令来实现这一点?我在谷歌上搜索过,但找不到任何东西,没有命令来实现这一点,而且单层图像违背了docker的设计理念。这说明了docker图像具有多个层的原因。简而言之,图像层
是Docker如此轻量级的原因之一。当您更改Docker映像时,例如当您将应用程序更新为新版本时,将生成一个新层并仅替换它更新的层。
此外,即使您的映像只有一个层,当您使用该映像创建容器时,Docker仍会在映像层的顶部添加一个薄的可读写容器层

若你们只是想移动你们的图像,并且认为一个图层可以使它更容易,你们可能应该尝试使用命令来创建一个tar文件


或者您有更复杂的需求,您可能需要使用VM映像而不是docker映像。

第一个选项:

# docker image build .
# docker run <your-image>
# docker container export <container-id created from previous command> -o myimage.tar.gz
# docker image import myimage.tar.gz
#docker镜像构建。
#码头工人赛跑
#docker容器导出-o myimage.tar.gz
#docker图像导入myimage.tar.gz
导入的映像将是单层文件系统映像


第二个选项:(不是一个完整的解决方案)-用于减少图像层的数量。

在构建过程中,我们还可以通过--squash选项使其成为单层图像

实验(守护进程)API 1.25+

将新构建的层挤压到单个新层中

我刚刚解决了使用多级构建的问题(上一个构建将只是上一个构建的
副本)


这不是docker的意图。但是,通过将多个命令与
RUN
命令相结合,可以减少层的数量。例如,您可以将
RUN echo foo
RUN echo bar
组合成一个命令(因此也可以组合成一个命令):
RUN echo foo&&echo bar
FROM alpine as build1
RUN echo "The 1st Build"

FROM scratch
COPY --from=build1 / /