这似乎是我无法找到答案的最简单的问题。
docker images
表明它已存在。docker images
,现在已有新图片。如何在不创建新图像的情况下简单更新旧图像?
我的泊坞窗命令:docker build -t nick_app . --force-rm --no-cache
(注意:我只是扔了那些--force-rm命令和--no-cache命令'因为看起来它会起作用。)
之前:
Dockerfile:
FROM ruby:2.3.3
RUN apt-get update -qq && apt-get install -y
CMD ["echo", "Sup"]
docker images命令:
REPOSITORY TAG IMAGE ID CREATED SIZE
nick_app latest 421662154c3f 9 minutes ago 746.9 MB
ruby 2.3.3 d00ebde6a601 2 days ago 730.1 MB
hello-world latest c54a2cc56cbb 4 months ago 1.848 kB
后: Dockerfile:
FROM ruby:2.3.3
RUN apt-get update -qq && apt-get install -y \
build-essential
CMD ["echo", "Sup"]
docker images命令:
REPOSITORY TAG IMAGE ID CREATED SIZE
nick_app latest bcf9b3667202 3 seconds ago 746.9 MB
<none> <none> 421662154c3f 10 minutes ago 746.9 MB
ruby 2.3.3 d00ebde6a601 2 days ago 730.1 MB
hello-world latest c54a2cc56cbb 4 months ago 1.848 kB
我制作的每个dockerfile更改都会在重建时创建一个新的none
图像。它们会累积,因此每次我进行更改并重建时,我都会获得另一张none
图片。
每次更改dockerfile时,如何摆脱中间none
?
答案 0 :(得分:7)
那些<none>:<none>
实际上是您的应用程序的旧版本,它已经丢失了它的命名指针,因为您将nick_app:latest
移动到了新版本。
在构建图像时,我认为你不能告诉它破坏旧图像,它只会创建一个新图像。 但是有一个命令可以帮助您列出或删除那些悬空图像:
docker images --filter dangling=true #lists all images that are dangling and has no pointer to it
docker rmi `docker images --filter dangling=true -q` #Removes all those images.