0

我尝试 dockerize 我的 Java 应用程序。每当我构建一个新镜像时,Docker 都会将新镜像添加到列表中,而不会删除旧镜像。我不运行图像,我只是一次又一次地构建。我认为它应该删除旧的。我错了吗?

码头工人文件

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD ./build/libs/admin-app-0.1.jar app.jar
CMD ["java","-jar","app.jar"]

命令

sudo gradle build
sudo docker build . -t admin-app:latest

结果

在此处输入图像描述

4

2 回答 2

0

您以悬空图像(未标记显示<none>在其名称上的图像)结尾的原因是您使用相同的名称/标签成功构建了多次相同的图像admin-app:latest
在这种情况下,已经使用此标签构建的先前(旧)图像成为“悬空图像”,因为新构建的图像已替换它。Docker 不想覆盖(删除)它,只是通过标记它来表明这个图像没有名称<none>

当构建失败时,您还可以生成悬空图像。

要摆脱悬空图像,您可以:

  • 每次执行构建时使用不同的标签以避免使用<none>.
  • 使用删除它们docker rmi $(docker images -f "dangling=true" -q)
于 2020-04-11T09:28:21.343 回答
0

这是完全正常的。docker 在构建过程中创建容器并在构建最终容器后将它们丢弃。见这里(http://www.projectatomic.io/blog/2015/07/what-are-docker-none-none-images/

您可以使用一些 bash 行轻松删除它们。请参阅此处(如何删除旧的和未使用的 Docker 映像

于 2017-01-17T09:14:34.093 回答