We started out with Docker for our Linux based projects, (correctly) assuming that this would be an easier way to get to know Docker before moving on to our Windows activities. Now we are getting closer to that.
One major reason for moving to Docker is that we want to preserve a well defined tool set for maintaining software that we release, maybe several years after delivery. Chasing bugs often requires the ability to regenerate a bit-by-bit identical version of the old delivery, modifying and regenerating it with exactly the same tools as used then. Preserving the Docker image preserves the complete tool set.
Then I discover that for Windows, this doesn’t hold: If we have preserved a container that was running on the 1809 Windows 10, when I come back in 2021, that Docker image is useless because I am now running the 2103 Windows on the host. The version of the Windows base layer must correspond to the version of the Windows host…
Please tell me that I have misunderstoood!
If we have to rebuild all our 1809 images when we update the hosts’ OS to 1903 (which will happen in a few weeks); and then again when we upgrade the hosts to 2003, and then again every 6 months… How can we then be sure that our images are 101% functionally identical and generate exactly the same binary results, under all circumstances?
I have tried building images with Windows base layers of the “wrong” versions, and they fail. So it looks like I have understood it correctly.
If that is the case, I am afraid that we will have to put Windows Docker on ice for a few more years, unti it matures. Who would accept a Visual Studio where you have to obtain a new version every half year because the OS is updated?