如何在<none>构建新映像时避免使用存储库和标记的 Docker 映像



我正在尝试构建一个新的docker映像。这就是我的 Dockerfile 的样子

FROM docker-standard-all/dev_env_g3_g5:latest
WORKDIR /root/
COPY controller.pom.xml .
COPY docker_settings.xml .
COPY stage.sh .
RUN mkdir ~/.m2
RUN ln -sf ~/docker_settings.xml ~/.m2/settings.xml
# Initialize Maven repository
RUN mvn dependency:resolve -f controller.pom.xml -q
ENTRYPOINT ["./stage.sh"]

构建码头工人之后

docker build -t bc/controller-in-docker:1.0.2" "${PATH}"

当我表演时

docker images -a
REPOSITORY                                          TAG                 IMAGE ID            CREATED             SIZE
bc/controller-in-docker                             1.0.2               a32e212bc0f7        2 hours ago         2.41GB
<none>                                              <none>              f4e68f5a2720        2 hours ago         2.41GB
<none>                                              <none>              b71751242efd        2 hours ago         2.4GB
<none>                                              <none>              26e3a086889c        2 hours ago         2.4GB
<none>                                              <none>              4acf1759940a        2 hours ago         2.4GB
<none>                                              <none>              0d66510e6a67        2 hours ago         2.4GB
<none>                                              <none>              adc5c7038a4b        2 hours ago         2.4GB
<none>                                              <none>              a994c54e00af        2 hours ago         2.4GB
docker-standard-all/dev_env_g3_g5                   1.17.4              6a83d123f497        6 months ago        2.4GB

经过一番谷歌搜索和堆栈溢出,我才意识到:容器不是悬挂的容器。事实上,它们似乎是在Dockerfile中运行COPY,RUN等命令后形成的。

问题:

  1. 我的新 docker 映像的总体大小是多少?我的每个 none:none 容器似乎从终端输出中占用 ~2.41GB。它们总共加起来为 2.4 * 7 GB

  2. 我可以删除这些无:无图像吗?他们肯定不是悬而未决的图像。但是它们每个占用2.4 GB(尽管不确定(,并且还混淆了与之相关的名称。

  3. 在构建新的 docker 映像时是否可以避免这些 none:none 映像?对 Dockerfile 有什么建议/修改以避免它们吗?

谢谢

docker images -a 将始终显示大量"无"映像,因为它显示了每个映像的每一层。例如,如果您运行

docker history docker-standard-all/dev_env_g3_g5:1.17.4, 

您应该会看到所有中间层 ID。这些包含在docker images -a输出中,无法删除。

要删除所有悬而未决的 Docker 映像,请执行以下操作:

sudo docker rmi $(sudo docker images -f “dangling=true” -q)

如果以根身份运行,则省略"sudo">

docker rmi $(docker images -f “dangling=true” -q)

最新更新