如何从我的 docker 镜像中删除图层?

Aaq*_*aja 8 docker boot2docker

我已经通过增量提交构建了一个 docker 镜像。这导致在我的 docker 镜像中创建了很多层,随后镜像的大小变得非常大。

有没有办法去除图层并因此减小图像的大小?

任何帮助,将不胜感激。

小智 8

您可以尝试导出图像,然后再次导入。通过这样做,所有图层都将丢失,并且您的图像尺寸将变小。

sudo docker export red_panda > exampleimage.tar
cat exampleimage.tar | sudo docker import - exampleimagelocal:new
Run Code Online (Sandbox Code Playgroud)

请注意,这仅适用于容器,因此您需要从映像启动一个,然后执行此操作。

希望能帮助到你。


Rya*_*der 5

你可以用下一个技巧挤压层

FROM oracle AS needs-squashing
ENV NEEDED_VAR some_value
COPY ./giant.zip ./somewhere/giant.zip
RUN echo "install giant in zip"
RUN rm ./somewhere/giant.zip

FROM scratch
COPY --from=needs-squashing / /
ENV NEEDED_VAR some_value
Run Code Online (Sandbox Code Playgroud)

  • 这种方法有一个问题 - 如果您有来自上一层容器的环境变量需要它工作,并且您使用此处介绍的“从头开始”方法,则不会保留这些变量 - 例如因此您可能会丢失 `$JAVA_HOME` - 所以请小心使用! (2认同)