【发布时间】:2023-03-07 20:45:01
【问题描述】:
我通过增量提交构建了一个 docker 镜像。这导致在我的 docker 镜像中创建了很多层,随后镜像的大小变得非常大。
有没有办法去除图层并因此减小图像的大小?
任何帮助将不胜感激。
【问题讨论】:
-
您会发现使用 Dockerfile 而不是增量提交构建的过程更加高效、可重复和可控。
标签: docker boot2docker
我通过增量提交构建了一个 docker 镜像。这导致在我的 docker 镜像中创建了很多层,随后镜像的大小变得非常大。
有没有办法去除图层并因此减小图像的大小?
任何帮助将不胜感激。
【问题讨论】:
标签: docker boot2docker
您可以尝试导出图像,然后再次导入。这样一来,所有图层都会丢失,并且您的图像尺寸会更小。
sudo docker export red_panda > exampleimage.tar
cat exampleimage.tar | sudo docker import - exampleimagelocal:new
请注意,这仅适用于容器,因此您需要从映像启动一个,然后执行此操作。
希望对你有帮助。
【讨论】:
docker images,图像会在那里列出吗?
docker images查看导入的图片是否列出?
你可以用下一个技巧挤压层
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
【讨论】:
FROM scratch 方法,正如您在此处介绍的那样,变量不会保留 - 例如,您可能会因此而丢失 $JAVA_HOME - 所以请小心使用!