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

时间:2020-05-28 09:28:10

标签: docker docker-compose dockerfile

我正在尝试构建新的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后

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. 我可以删除这些none:none图像吗?他们肯定不会晃晃图像。但是它们每个都占用2.4 GB(虽然不确定),并且还会混淆与它们相关的名称。

  3. 在构建新的Docker映像时是否可以避免这些none:none映像?为了避免对Dockerfile提出任何建议/修改?

谢谢

1 个答案:

答案 0 :(得分:0)

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)

如果以root身份运行,则省略“ sudo”

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