When a child birth one of the first thing is give a name! You should do the same with yours images! Why I writing about this ? If you are not becarefule with images names and tags you can do the mess with our local docker images storage. Sometimes you have to prepare different images for some features/branches/deploys.
Let’s prepare our dockerized website.
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Title</title> </head> <body> <h1>Hello World</h1> </body>
Image to run container responsible for displaing it:
FROM nginx COPY index.html /usr/share/nginx/html/index.html
OK, It’s time to building. Build first version by command
docker build . Then we want to something change in the our website and build again by
build command. Which images we have ?
root@local:~/project$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> c8af32463c20 5 seconds ago 141MB <none> <none> f1663715c693 About a minute ago 141MB nginx latest 605c77e624dd 8 days ago 141MB
As you see there are a
<none> words. It’s not helpful when you want to pick up specific image.
Why we have images without REPOSITORY and TAG ? It’s caused by build image without
-t option These images were built by command
docker build . How we can fix it or how we can build images ? Firstival we can
tag image after build by command
docker tag f1663715c693 website:1.0 and
docker tag f1663715c693 website:1.2.
root@local:~/project$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> c8af32463c20 16 minutes ago 141MB website 1.2 c8af32463c20 21 minutes ago 141MB website 1.0 f1663715c693 22 minutes ago 141MB nginx latest 605c77e624dd 8 days ago 141MB
But this needs from us additional action. Remember, we can do it while building an new image.
docker build -t website:1.3 .
Very interesting option is adding multiple specific tags at once. The case with
latest is very helpful to tag a version of image and set it at latest.
docker build -t website:1.3 -t website:latest .
Full documentation about tagging we can find on https://docs.docker.com/engine/reference/commandline/tag.