Docker tags uniquely identify a Docker image, allowing you to deploy a specific version of an image. A single image can have multiple tags associated with it. Typically, every time you publish a new version of an image, you will also update its tags to make it easier for your users to get the latest version.
This guide will explain Bitnami's tagging system and how you can use it to identify different versions of its Docker container images.
Bitnami uses rolling tags for its Docker container images. To understand how this works, let's look at the tags for the Bitnami Redmine container image:
3-ol-7, 3.4.6-ol-7-r40 3-debian-9, 3.4.6-debian-9-r24, 3, 3.4.6, 3.4.6-r24, latest
- The latest tag always points to the latest revision of the Redmine image.
- The 3 tag is a rolling tag that always points to the latest revision of Redmine 3.x.
- The 3.4.6 tag is a rolling tag that points to the latest revision of Redmine 3.4.6. It will be updated with different revisions or daily releases but only for Redmine 3.4.6.
- The 3-debian-9 and 3-ol-7 tags point to the latest revision of Redmine 3.x for Debian 9 and Oracle Linux 7 respectively.
When Bitnami revises container images, typically to upgrade system packages, fix bugs or improve system configuration, it also updates the container tags to point to the latest revision of the image. Therefore, the rolling tags shown above are dynamic; they will always point to the latest revision or daily release for the corresponding image.
As an example, the 3.4.6 tag might point to Redmine 3.4.6 revision 20 now, but will refer to Redmine 3.4.6 revision 21 when Bitnami next updates the container image. The suffix revision number (rXX) is incremented every time Bitnami releases an updated version of the image for the same version of the application.
It is worth noting that any tags that do not explicitly specify a distribution should be assumed to refer to Debian 9.
What if you depend on a specific revision of an image? For these scenarios, Bitnami also attaches a static (immutable) tag to each revision. In this example, the 3.4.6-r24 tag refers to Redmine 3.4.6 revision 24 and using this tag ensures that users always get exactly the same image every time.
Which tag should you use and when? Follow these guidelines:
If you are using containers in a production environment (such as Kubernetes), Bitnami recommends using immutable tags. This ensures that your deployment is not affected if a new revision inadvertently breaks existing functionality.
If you are using containers for development, Bitnami suggests using rolling tags. This ensures that you are always using the latest version. Rolling tags also make it easier to use a specific version of a development tool (such as bitnami/node:8 for Node.js 8).
To learn more, consider visiting the following links: