我有以下图像:
REPOSITORY TAG IMAGE ID CREATED SIZE
softshipper/foo-service latest f3bcb2966414 5 seconds ago 295MB
openjdk 11.0.5-jre 499aaf14790b 4 weeks ago 267MB
softshipper/foo-service
的实际大小是28MB(295-267)还是295MB?
docker文件如下所示:
FROM openjdk:11.0.5-jre as stage0
LABEL snp-multi-stage="intermediate"
LABEL snp-multi-stage-id="7dad9ef8-0561-42df-950d-e186b93ff4b0"
WORKDIR /opt/docker
COPY opt /opt
USER root
RUN ["chmod", "-R", "u=rX,g=rX", "/opt/docker"]
RUN ["chmod", "u+x,g+x", "/opt/docker/bin/foo-service"]
FROM openjdk:11.0.5-jre
USER root
RUN id -u demiourgos728 1>/dev/null 2>&1 || (( getent group 0 1>/dev/null 2>&1 || ( type groupadd 1>/dev/null 2>&1 && groupadd -g 0 root || addgroup -g 0 -S root )) && ( type useradd 1>/dev/null 2>&1 && useradd --system --create-home --uid 1001 --gid 0 demiourgos728 || adduser -S -u 1001 -G root demiourgos728 ))
WORKDIR /opt/docker
COPY --from=stage0 --chown=demiourgos728:root /opt/docker /opt/docker
USER 1001:0
ENTRYPOINT ["/opt/docker/bin/foo-service"]
CMD []
答案 0 :(得分:5)
softshipper/foo-service
的实际大小为295MB。但是,softshipper/foo-service
是基于openjdk
的,这意味着softshipper/foo-service
使用了openjdk
的某些层。
因此,softshipper/foo-service
的实际大小为295MB,而openjdk
的实际大小为267MB。但是,softshipper/foo-service
+ openjdk
的实际大小小于295 + 267MB,因为两个图像使用了相同的图层。
请注意,无法通过简单的正负来知道softshipper/foo-service
+ openjdk
的实际大小。大小取决于它们都使用相同的图层。