-
Notifications
You must be signed in to change notification settings - Fork 94
Closed
Labels
Description
I would like to present a proposal to provide multi-OS images via manifest. We had a chat regarding this but I would like to register this request here, on the place where it should be.
Expected Behavior
It would be nice to be able to reference images without having to specify OS relationship in the tag. That would dramatically simplify the usage of the images for us, partners, customers, and end-users.
We would be able to run the following commands independently on OS host (let's say WinServer 2016 or WinServer 2019 etc.):
docker pull mcr.microsoft.com/businesscentral/onprem:2004-w1
docker pull mcr.microsoft.com/businesscentral/onprem:2004-dk
docker pull mcr.microsoft.com/businesscentral/onprem:2004-cu1-dk
Actual Behavior
Today we have to consider what OS we are going to use (which might be uncertain if we run some sort of orchestrated environment - e. g. Docker Swarm cluster with multiple nodes on different versions of OS):
- WinServer 2016:
docker pull mcr.microsoft.com/businesscentral/onprem:2004-w1-ltsc2016
docker pull mcr.microsoft.com/businesscentral/onprem:2004-dk-ltsc2016
docker pull mcr.microsoft.com/businesscentral/onprem:2004-cu1-dk-ltsc2016
- WinServer 2016 alternative (which isn't very OK from my perspective - the tag should be mandatory if the image is for a specific OS version only):
docker pull mcr.microsoft.com/businesscentral/onprem:2004-w1
docker pull mcr.microsoft.com/businesscentral/onprem:2004-dk
docker pull mcr.microsoft.com/businesscentral/onprem:2004-cu1-dk
- WinServer 2019:
docker pull mcr.microsoft.com/businesscentral/onprem:2004-w1-ltsc2019
docker pull mcr.microsoft.com/businesscentral/onprem:2004-dk-ltsc2019
docker pull mcr.microsoft.com/businesscentral/onprem:2004-cu1-dk-ltsc2019
Motivations
- Generally, a radical simplification when working with images (tags). We might focus only on relevant aspects related to NAV/BC releases (major, cu, country etc.).
- This is especially needed in order to be able to work properly with multiple OS without any additional logic being added (which isn't necessary IMO).
Details
- My suggestion is based on multi-arch approach existing for a long time in Docker.
- There is a possibility to use it also to distinguish between OS versions, not only to identify platforms. More can be found e. g. here - multi-win-version-aspnet.
- A demonstration of how do the image tags look like can be seen here - multi-win-version-aspnet/tags.
- The best is that the cost is very low (almost nothing).
- It's easy to create a manifest. The only problem is that the command itself is still hidden in experimental features:
- https://docs.docker.com/engine/reference/commandline/manifest/
- Drop experimental tag for manifest commands docker/cli#1355
- I was able to create manifest in a few seconds but I can't (of course) upload it to your repo :):
docker manifest create mcr.microsoft.com/businesscentral/onprem:1910-es-multi mcr.microsoft.com/businesscentral/onprem:1910-es-ltsc2016 mcr.microsoft.com/businesscentral/onprem:1910-es-ltsc2019
And the content is:
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
"manifests": [
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 8342,
"digest": "sha256:c11670cea7a9263b706a2bc0869a992c1e15cbb37b7526e6dd9792aa3742c75f",
"platform": {
"architecture": "amd64",
"os": "windows",
"os.version": "10.0.14393.3443"
}
},
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 8342,
"digest": "sha256:ea5ad7a924d90ea51f94bc87721ac9e01201943cebef029e307a8b9589474722",
"platform": {
"architecture": "amd64",
"os": "windows",
"os.version": "10.0.17763.973"
}
}
]
}
- The downside I can see is the fact we can't use no-ltsc tag as this means to use LTSC2016 today. We would need to use e. g. -multi postfix instead to use automatic assignation.
docker pull mcr.microsoft.com/businesscentral/onprem:2004-w1-multi
docker pull mcr.microsoft.com/businesscentral/onprem:2004-dk-multi
docker pull mcr.microsoft.com/businesscentral/onprem:2004-cu1-dk-multi
splitt3r and Mattszczp