29
votes

I am using Win 10 Pro N (Version 1709) as a development machine and Windows Server 2016 Standard (Version 1607) as production server.

I am currently developing an ASP.NET Core 2 application with MongoDb as database.

A couple days ago I first stumbled over the idea, to run MongoDb as a Docker image.

I don't have any experience with Docker so far, but I managed to switch from Linux containers (default) to Windows containers on Windows machines.

Was this a good decision? Or is there any reason why I should use Linux containers instead of Windows containers in my scenario?

What e.g. if I should decide to deploy my application to a Linux server some time? In this case, would it wiser to start with Linux containers right from the beginning?

2
You can use both and switch between them at any time, and run containers in both modes at the same time. The only downside is you cannot manage (connect, start, stop, etc.) the containers of the non-selected mode.OrangeDog

2 Answers

38
votes

Docker is not about virtualization but more about isolation.

A windows container will run on a windows host

A linux container will run on a linux host

Then some people wanted to run linux container on windows

  • First you needed to create a linux vm on windows to run the container
  • Now you can use LinuxKit to run the container but it's still a light VM

Then some people wanted to run windows container on linux

  • First you needed to create a windows vm on linux to run the container
  • Now you can use nothing more as of today

So the best bet is to start with a container aimed at your production servers

16
votes

If you want to deploy to linux I would advise using linux containers since you then test a more similar setup and are more likely to find issues that will also show in your final deployment.

Other than that linux container technology is more mature and better supported than windows containers.