Difficutlties understanding new architecture related to Docker for Windows

I experimented with docker a couple of years ago but efforts ceased more or less one and half years ago. At that time I used VMWare virtual machine as I had some other VMWare images as well.
A couple of days ago I restarted with docker but learned that the recommended Docker for Windows won’t allow to run VMWare and VirtualBox as it uses Hyper-V if you run min. Windows Pro to allow a deeper system integration, as indicated in the blog Docker Saigon and roughly explained in the docker blog in regard of the WINDOWS 10 FALL CREATORS UPDATE . It seems it makes things like docker-compose obsolete.

Unfortunately Hyper-V isn’t compatible with VMWare and VirtualBox so either you use Hyper-V and Docker for Windows or you deactivate Hyper-V and use Docker-Machine.
Luckily there are tools to convert from VMWare to Hyper-V and vice versa but I cannot tell how reliable they are.
If I want to continue with Docker for Windows I need to convert my other fee VMs. Does anyone has made good experience with the above referenced tool?
I would like to avoid experimenting in this matter as besides the clear advantages of Docker compared to a virtual machine I still have some desktop only application what cannot be replaced by docker (server) based applications.

In the past I was quite happy with the Docker Machine solution as it allowed me to establish a safe fall back / back up workflow. I had playing copy of a machine with a standard set of images installed in it to run several instances containers of the images. As soon as I reached a acceptable state, allowing safe productive use I just copied the entire virtual disk.
How could realise that with Docker for Windows? May the described workflows in stackoverflow - What is the difference between a Docker image and a container? is good point to start?

My knowledge about Docker (images, container,tags etc.) and the differences to an virtual machine are mainly based on two entries on stackeroverflow

  1. 1.How is Docker different from a virtual machine?
  2. 2.In Docker, what is the difference between an image and a repository?
    and some sources in regard of the MobyVM
  3. 3.Isn’t the MobyLinuxVM the default docker-machine?
  4. 4.OK, I give up. Is Docker now Moby? And what is LinuxKit?
  5. Moby project

In addition I have still difficulties to run several whatever Dockers in parallel lets say one productive environment and one dev environment. In the past it was simple, as described above.
Do I have to run a separate docker-machine for the second+ environment as described in Run docker swarm mode on windows 10 using multiple hosts or do I need several daemons as described in Is it possible to start multiple docker daemons on the same machine?

Thank you for clarification

Well Microsoft is using Well Microsoft is quite interested in Docker and they are improving it steadily. 1709 update made Docker fundamentally different than before. I would recommend using native Windows images if possible. (e.g. not using VM and Moby underneath) If you cannot find the required images for Windows, 1709 update allows running Windows and Linux containers side by side, without switching modes. Unfortunately, it is not yet available for WS2016 Long term support channel. In Windows 10, however, this is not an issue. Also, networking and swarm has many problems in WS2016 LTS, whereas it is fixed in 1709 and later updates.

I recommend Docker for Windows, especially since now it has process-level isolation, it is much easier on the resources for Windows Images. Or you can always spin up a Linux machine, Docker is more stable for linux, has less problems in Networking, also third party orchestrators like Kubernetes run more smoothly on linux machines.

In WS16 LTS channel, you cannot run more than one instance of each service, unless you manage scaling and load balancing somewhat manually and you would need other machines to test your swarm. Services have problems binding to ports. In 1709 update, this is not an issue. And networking is getting better with each update.

I reckon you refer to Preview Docker for Windows Server 1709 and Windows 10 Fall Creators Update and Exciting new things for Docker with Windows Server 1709

Docker allows only to run one of them

I use it but how can I run a second Docker machine besides the Docker for Windows (what is by Docker for Windows created VM called MobyLinuxVM).
What is the best backup strategy?

To run Win and Linux images side by side, I don’t think you need to do anything. just pull linux images (if you have had Windows 10 and Docker fully upgraded. WS16 does not support it) and they should work just fine.

What do you mean by backup strategy?


how do I backup containers the most efficient way. In the pre-1709 age I simply created copies of the entire VM.

You can just push images to docker hub. Tag images under “backup” or something. You don’t have a VM running anymore (unless you use linux containers)

but what if don’t want to push it to docker hub as some container contain sensitive data.

I use Linux containers, that’s why I have the MobyLinuxVM.vhdx? How would it look like if I run Windows container?

You can either use a private repository, or set up your own repository. There should be an image along with instructions in docker hub.

I don’t think you can see the VM in Hyper-v manager window like you see the MobyLinux VM.

1 Like

it is a Hyper-v VM but it stores as full VM.

If you run Windows container they need to stored somewhere too but where?

it is well explained on CODE MAZE - Docker Hub vs Creating a Local Docker Registry and there some other ways of pushing explained on stackoverflow - How to push a docker image to a private repository
thx for the hint

You almost answered all my question :+1: :grinning:
Could answer that question above it would clarify a lot :grimacing:

Sorry for the ate reply, missed the answer :confused:
“If you run Windows container they need to stored somewhere too but where?”

The images and stuff is stored in C:/programdata/docker/windowsfilter as far as I know. I have no clue how and what format it uses though :frowning: In any case, go to linux if you can to preserve your sanity

1 Like

no worries happens sometime to me too

no worries I will stay with Linux containers (and hence MobyLinuxVM.vhdx

I have a final question how could I run another Docker image parallel to the Linux container (MobyLinuxVM.vhdx) for special testing purposes? I’ve read about clustering, deamons and swarms. What is the right approach?

This is bit off topic about slightly related to the question above. Do you have experience in converting virtual machine images from one format to another one?

What do you mean? You can spin up a VM in virtual box or hyper-v and use it like another node.

and how do I do that when I use Docker for Windows :thinking:?