After having read this informative blog post, I am left with some more questions about the way Docker treats images.
Firstly, let’s say I’m building an image based on
my-great-site:latest, and I don’t currently have a local copy of
docker build automatically pulls that base image from the Docker Hub, and I can see it in the output of
docker image ls:
REPOSITORY TAG IMAGE ID CREATED SIZE my-great-site latest 99651da2f649 14 hours ago 133MB nginx latest 7e4d58f0e5f3 2 weeks ago 133MB
If an image is just a reference to the layers that compose the image, why do I need to have a copy of the
nginx image itself in order to build
my-great-site? Shouldn’t Docker be able to build my custom image by pulling only the anonymous layers associated with
Secondly, if my local copy of
nginx:latest is outdated by the latest build on Docker Hub, why does
docker pull leave a named but untagged copy of the older
nginx image in my local image cache? Specifically, why doesn’t it leave the older copy as a dangling image?
REPOSITORY TAG IMAGE ID CREATED SIZE my-great-site latest 99651da2f649 14 hours ago 133MB nginx <none> 01a84233ca90 2 weeks ago 132MB nginx latest 7e4d58f0e5f3 2 weeks ago 133MB