Is it possible for image to have multiple tags?

When I am pushing new image to repo I would like it to have two tags for example 0.2 and latest. This would allow to always pull latest image version by using latest tag and a specific version by using 0.2 tag for example. Is it possible with docker?

Is there any workaround? The only solution I see is to make two separate pushes...


Solution 1:

You can build an image with several tags and then push the image with the --all-tags option.

Example:

docker build -t reg/user/image:foo -t reg/user/image:latest .

docker push reg/user/image --all-tags

Older Docker clients that do not support --all-tags will push all tags by default (simply omit the option), newer clients will only push latest by default. As an alternative, you may want to push each tag separately.

Solution 2:

You can create multiple tags:

docker tag <id> <user>/<image>:0.2
docker tag <id> <user>/<image>:latest

and push these.

Solution 3:

You need to do one push per each version like:

docker tag test:latest <repo>/<user>/test:latest
docker push <repo>/<user>/test:latest

docker tag test:0.2 <repo>/<user>/test:0.2
docker push <repo>/<user>/test:0.2

You can also combine and say the latest version is 0.2 like:

docker tag <repo>/<user>/test:latest <repo>/<user>/test:0.2
docker push <repo>/<user>/test:0.2

So those will point the same image layer.