我有Dockerfile,如下所示:
FROM openjdk:8 as stage0
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/sapmock"]
FROM openjdk:8
USER root
RUN id -u demiourgos728 2> /dev/null || (( getent group 0 || groupadd -g 0 root ) && useradd --system --create-home --uid 1001 --gid 0 demiourgos728 )
WORKDIR /opt/docker
COPY --from=stage0 --chown=demiourgos728:root /opt/docker /opt/docker
EXPOSE 8080
USER 1001:0
ENTRYPOINT ["/opt/docker/bin/sapmock"]
CMD []
然后,我将创建如下图像:
docker build -t sapmock .
Sending build context to Docker daemon 38.83MB
Step 1/15 : FROM openjdk:8 as stage0
8: Pulling from library/openjdk
构建成功。当我列出创建的图像时,它显示:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sapmock latest b0c10315185f About a minute ago 664MB
<none> <none> c9210e522d87 About a minute ago 703MB
openjdk 8 bec43387959a 2 weeks ago 625MB
什么是<none>
图片,为什么创建它?
答案 0 :(得分:1)
创建新的docker映像时,如果它与现有的docker映像具有相同的名称,则不会删除旧的docker映像,而是将其变成具有名称和标签{{1 }}
您可以使用<none>
删除悬空的图像
答案 1 :(得分:1)
作为多阶段构建的一部分,这两行FROM
构建了两个图像,但是您只在最后标记了其中一个。另一个图像保留在构建缓存中,使将来的构建可以更快地运行并重用以前的构建中的图层。