'Why the "none" image appears in Docker and how can we avoid it
When I run the docker-compose build command to rebuild an image in Docker because I had changed something in Dockerfile, sometimes I get "none" image tags. How can we avoid this fact? I want to rebuild the image but the none image should not appear.
REPOSITORY TAG IMAGE ID CREATED SIZE
magento2 latest b4dce4dcbd4f 16 hours ago 516MB
<none> <none> b4ffce2bf91e 16 hours ago 519MB
<none> <none> a1aedb60c82a 17 hours ago 516MB
<none> <none> ec9a14ae856c 20 hours ago 519MB
<none> <none> ef8eba6874cc 23 hours ago 516MB
<none> <none> 0e53a8b8c303 23 hours ago 516MB
php 7.1-apache 93e6fb4b13e1 3 weeks ago 369MB
mysql 5.6.39 079344ce5ebd 7 months ago 256MB
Solution 1:[1]
Below are some parts from What are Docker <none>:<none> images?
The Good
<none>:<none>These are intermediate images and can be seen using
docker images -a. They don't result into a disk space problem but it is definitely a screen "real estate" problem. Since all these<none>:<none>images can be quite confusing as what they signify.The Bad
<none>:<none>These images are the dangling ones, which can cause disk space problems. These
<none>:<none>images are being listed as part ofdocker imagesand need to be pruned.(a dangling file system layer in Docker is something that is unused and is not being referenced by any images. Hence we need a mechanism for Docker to clear these dangling images)
So,
if your case has to do with
danglingimages, it's ok to remove them with:docker rmi $(docker images -f "dangling=true" -q)There is also the option of
docker image prunebut the client and daemon API must both be at leastv1.25to use this command.if your case has to do with
intermediateimages, it's ok to keep them, other images are pointing references to them.
Related documentation:
Solution 2:[2]
In my experience most of the <none> images are held by temporary containers. Due to Docker architecture those containers are preserved even after they stop. You can verify how many stopped containers you have using
docker ps -a
So to remove the <none> images you first need to remove the unneeded containers:
docker container prune
docker image prune
The above two commands can be abbreviated to
docker system prune
Solution 3:[3]
There is little to add based on what @tgogos said except that it needs more upvoting.
You can check image sizes of dangling and non-dangling images here:
docker system df -v
Don't be bugged by intermediate images. This way you oversee that the build process has been made more efficient by keeping intermediate images for each line of a Dockerfile, i.e. such a line can be skipped during the build process if no change occurred.
Solution 4:[4]
To remove <none> layers use:
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
Solution 5:[5]
This will remove all dangling docker images in Windows:
for /f %x in ('docker images -f "dangling=true" -q') do docker rmi %x
Solution 6:[6]
You can remove dangling images using
docker rmi $(docker images -f "dangling=true" | grep "<none>.*<none>" | awk '{ print $3; }')
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | |
| Solution 3 | Patrick |
| Solution 4 | |
| Solution 5 | pinxau1000 |
| Solution 6 | GC001 |
