我尝试将我的Java应用程序停靠。每当我构建新图像时,Docker都会将新图像添加到列表中而不删除旧图像。我没有运行图像,我只是一次又一次地构建。我认为它应该删除旧的。我错了吗?
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
结果
答案 0 :(得分:0)
这完全正常。 docker在构建过程容器中创建并在构建最终容器后将它们抛弃。见这里(http://www.projectatomic.io/blog/2015/07/what-are-docker-none-none-images/)
你可以使用一些bash行轻松删除它们。见这里(How to remove old and unused Docker images)
答案 1 :(得分:0)
之所以以悬空的图像(未标记图像的名称显示<none>
)为结尾,是因为您多次成功地使用相同的名称构建相同的图像/标记:admin-app:latest
。
在这种情况下,已经用此标签构建的先前(旧)图像将变成“悬空图像”,因为新构建的图像已将其替换。 Docker不想覆盖(删除)它,而只是通过标记<none>
来表明该映像没有名称。
当构建失败时,您还可以生成悬空的图像。
要摆脱悬空的图像,您可以:
<none>
标签的图像。docker rmi $(docker images -f "dangling=true" -q)
删除它们。