Skip to content

Multi-OS images via manifest property #466

@Koubek

Description

@Koubek

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

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions