I’m considering to do a counter-argument article from an automation perspective.
Is it ok not to use “latest” version of an image?
It’s fine by me as long as the most stable version is used. Using latest
can create serious problems due to application compatibility with the docker container environment. For instance, imagine using node:latest, when your app is built in and for a node 8 environment. It’s the same with Python, PHP, etc. At times, it’s best to ping the version of the image that you need or pin the latest of minor version of the major version (e.g. node:8-latest, python:2.7-latest). This ensure that your application is still receiving updates in a stable environment.
In fact, Docker is designed for isolation and pinning of versions of an image to create an isolated and sustainable environment for applications.
Automation with the latest image
From an automation perspective, using latest is great, assuming you have close to 100% test coverage. This allows your application to be tested in various versions of the image and it will create a report of which version your app operates in and has a problem with. Nevertheless, if your application is robust and can withstand the changes in time and environment, it proves that your app is well built and can be deployed automatically.