Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature Request: Swapable Virtualization backends #6

Closed
raesene opened this issue Jul 29, 2016 · 15 comments
Closed

Feature Request: Swapable Virtualization backends #6

raesene opened this issue Jul 29, 2016 · 15 comments

Comments

@raesene
Copy link

@raesene raesene commented Jul 29, 2016

Expected behavior

Able to change the virtualization back end used by Docker for Windows to accomodate scenarios where the user already has a virtualization product installed.

Actual behavior

Docker for Windows requires Hyper-V which doesn't co-exist with other virtualization platforms for windows (e.g. Virtualbox, VMWare Workstation)

Information

It would be really nice if it was possible to swap out what virtualization backend is used by Docker for windows. There are likely a large number of potential users who already have a virtualization platform installed, and so can't install this, as in general virtualization platforms don't co-exist well on a given OS install.

Cute Animal Picture

cutepicture

@vlascik
Copy link

@vlascik vlascik commented Jul 29, 2016

+1, this decision was just bad, forcing all docker users to convert all their VMs from vmware/vbox/android emulators/etc to hyper-v, because hyper-v disables other vm solutions...I mean, really?
You should make mobylinux.iso bootable in vmware&co. or provide a separate version that is bootable again, 1.11 worked great.

@friism
Copy link

@friism friism commented Jul 29, 2016

Thanks for the feedback. We know that this is a serious limitation and we're thinking about how to improve.

The problem is that Docker for Mac and Windows are a lot more than scripts that setup Linux with Docker in a Hyper-V VM. They also:

  • Manage networking to ensure that Docker works with VPN and proxies
  • Ensure that host volume mounting into containers works reliably
  • Manage seamless updates as new Docker versions are released

(We know there's still progress to be made on these things). To make most of these happen, we have to integrate tightly with a particular hypervisor and run additional services on the host.

If you're content with Toolbox and boot2docker and don't need improvements we're trying to introduce with Docker for Mac and Windows, we're still releasing those as new versions of Docker show up.

@vlascik
Copy link

@vlascik vlascik commented Jul 29, 2016

Thanks, it's good to know Docker Toolbox will still be updated, I checked it earlier today and it was still on 1.11, I assumed it's dead, but it's on 1.12 now. Maybe it would be a good idea to mention somewhere on your site what docker's plans for the future of toolbox vs. docker for win/mac are, to avoid the confusion?
I suspect you won't support two similar solutions forever, but please have a plan B without the need for Hyper-V afterwards.

@rn
Copy link
Contributor

@rn rn commented Jul 30, 2016

I have to second @friism comments and add that integrating a different hyper-visor is likely an effort of one or two man years of engineering followed by the complexity of maintaining several versions. Furthermore, native Windows container in Windows 10 Pro (coming with RS1) also require Hyper-V so won't co-exist with other virtualisation solutions.

@blitzd
Copy link

@blitzd blitzd commented Aug 4, 2016

@rneugeba I wouldn't think they'd want to tightly couple native container functionality on Windows to the overall solution for managing docker on Windows anyways.

It wouldn't be as much of an issue if Hyper-V played nice with other VM solutions, but it doesn't - so anyone with an existing VM solution installed that is not Hyper-V simply can't use Docker for Windows.

Having used Hyper-V for Linux VMs on Windows, and being frustrated by the complete lack of support from MS, I'm thinking that this is going to end up being a big issue. I expect that most people would end up using VirtualBox or VMWare for Linux development on Windows, and are likely in the same boat.

@cweagans
Copy link

@cweagans cweagans commented Sep 2, 2016

The problem is that Docker for Mac and Windows are a lot more than scripts that setup Linux with Docker in a Hyper-V VM. They also:

  • Manage networking to ensure that Docker works with VPN and proxies
  • Ensure that host volume mounting into containers works reliably
  • Manage seamless updates as new Docker versions are released

It's almost like that problem has been solved already, specifically: networking, volume mounting, and updates. :)

In all seriousness, though, what about a degraded functionality mode that can be run when HyperV is not available - eg on Windows 10 Home.

@voraciousdev
Copy link

@voraciousdev voraciousdev commented Sep 16, 2016

native Windows container in Windows 10 Pro (coming with RS1) also require Hyper-V

@rneugeba I don't think this is the case. There is a clear distinction between Hyper-V containers and Native Windows Containers. Is Docker for Windows using Hyper-V containers (which are essentially just VMs still), or is it actually using Native Containers?

@rn
Copy link
Contributor

@rn rn commented Sep 16, 2016

@drm2 I'm fairly certain that Windows 10 AE only supports Hyper-V containers. Native Windows Containers are a feature of Windows Server 2016

@voraciousdev
Copy link

@voraciousdev voraciousdev commented Sep 16, 2016

@rneugeba I apologize. You are correct, at the moment, but I believe the plan is to get native container support on Windows 10 eventually (hopefully sooner rather than later). I'm not saying another hypervisor software should be implemented (that would be no different than Docker Toolbox). I'm just saying that when native container support is available in Windows 10, it will be nice to not need Hyper-V enabled, and I hope that is part of the plan.

@cweagans
Copy link

@cweagans cweagans commented Sep 17, 2016

@drm2 That's not accurate. Native containers use the Windows kernel, which might be useful to some people, but the vast majority of people want to use the linux-based containers from hub.docker.com. Two separate things.

@friism
Copy link

@friism friism commented Sep 18, 2016

@cweagans container images work the same way whether they're for Linux or Windows. Also note that Windows Server Containers (shared kernel) and Windows Hyper-V containers (lightweight Hyper-V VM per container) images are interchangeable, i.e. the same Windows Container image can be run in either mode.

Docker Hub can store, and already has, both Linux and Windows container images.

@cweagans
Copy link

@cweagans cweagans commented Sep 18, 2016

@friism I understand. I'm pointing out that Docker for Windows is designed to run Linux images. AFAIK, Docker for Windows is just starting up a Linux VM using HyperV, running the Docker daemon in that VM, and handling any of the hoops you'd normally have to jump through in order to connect your local Docker client to that daemon and not one VM per container.

Where did you see that Windows Server Containers and HyperV containers are interchangeable? That sounds wrong, to be frank. If you're running a Linux container in HyperV, you can't just pick that container up and run it with the shared kernel functionality on Windows Server. It's not the same kernel.

@rn
Copy link
Contributor

@rn rn commented Sep 18, 2016

@cweagans maybe to clarify, there are Linux and Windows container images on the hub (as well as ARM images, etc). Linux containers can be run on Linux Container engine, which, with Docker for Windows are run inside a Linux VM on top of Hyper-V.

Windows container images can be run on two different types of Container engines, either as native Windows Server containers (where they run on the same kernel as the host, shared kernel) or as Windows Hyper-V containers, which utilises a lightweight windows VM on top of Hyper-V to execute the container. Note, the latter VM is a different VM to the Linux VM, Docker for Windows uses to run Linux container.

Admittedly, the terminology is a bit confusing...and the latest Docker for Windows Beta now also allows you to choose between running Linux containers and Windows containers.

@rn
Copy link
Contributor

@rn rn commented Sep 28, 2016

I'm closing this issue. While we understand the background for the request, qe currently have no concrete plans to offer other virtualization backends for Docker for Windows for the reasons outlined above. We continue having Toolbox and docker-machine updates for non-Hyper-V users.

@docker-desktop-robot
Copy link
Collaborator

@docker-desktop-robot docker-desktop-robot commented Jun 16, 2020

Closed issues are locked after 30 days of inactivity.
This helps our team focus on active issues.

If you have found a problem that seems similar to this, please open a new issue.

Send feedback to Docker Community Slack channels #docker-for-mac or #docker-for-windows.
/lifecycle locked

@docker docker locked and limited conversation to collaborators Jun 16, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
9 participants