Search code examples
dockerdocker-for-windows

How are all official windows docker images related?


I have been working with Docker for Windows for about a year now, and I still do not have a good grasp of when I should use the different images, how they are related, and what components of Windows that are in them.

On this link:

https://hub.docker.com/_/microsoft-windows-base-os-images

there are four "Featured repos":

  • windows/servercore
  • windows/nanoserver
  • windows/iotcore
  • windows

I understand that windows/servercore should contain more things that nanoserver, but what are does things exactly? Why does some programs work in servercore and not nanoserver and is there some way of finding what is missing in nanoserver for a particular program?

In addition to this, they list three related repos:

  • microsoft/dotnet-framework
  • microsoft/dotnet
  • microsoft/iis

Both of the dotnet repos contain five sub repos, and the difference is that dotnet-framework is based on server core, while dotnet is based on nanoserver.

Is there some comprehensible documentation of all these repos/images, maybe with a graph for a simple overview? Do some of them have a public Dockerfile that explains how they were created, like for example this:?

https://github.com/docker-library/python/blob/master/3.6/windows/windowsservercore-ltsc2016/Dockerfile


Solution

  • The differences your are mentionning are less linked to Docker than you think.

    All images are a successions of operation which will result in a functionning environnement. See it as an automated installation, just like you would do it by hand on a physical machine.

    Having different images on a repo means that the installation is different, with different settings. I'm not a .NET expert nor a Windows Server enthousiast, but for what I found, Nano Server is another way to install a Windows Server, with less functionnality so it's light-weigth. (https://learn.microsoft.com/en-us/windows-server/get-started/getting-started-with-nano-server)

    Those kind of technical difference are technology specific and you'll find all the informations needed on the official documentations of Microsoft.

    Remember that Docker is a way to do something, not the designer of the os you are using, so most of the time you'll have to search in the actual documentation of your system (in that case, Windows Server and .NET framework).

    I hope this helped you to understand a little better, have fun with Docker!