3

How do you properly propagate VT-X through physical hardware into a server provisioned via Xen so that virtualized docker can be run inside the virtual Windows server?

L0 is Xen running inside CentOS.
L1 is Virtual Box running inside Windows Server 2012 inside Xen.
(theoretically) L1 is hosting boot2docker running on TinyCore running inside VirtualBox running inside Windows Server 2012 R2 running inside Xen running inside CentOS. Boot2Docker requires VT-X to be enabled and the L0 setting is not propagating through L1 so that it can be made available to L2.

[Edit]

A member of my server provisioning team just informed me that xenserver doesn't support Nested Virtualization through a Windows Server virtual instance and that Nested Virtualization is available only to Linux virtual servers. Can anyone confirm or refute this?


A touch of background: I had our server provisioning team produce a new virtual Windows Server for me to develop against. I am trying to initially configure this thing as a single tier for my source, lab, development, build and CI environments as well as my internal www server(IIS) for service host applications coming out of development.

A piece of my desired configuration is reliant on a Linux docker container and this is where I ran into a problem. As I was starting up my Docker Machine, I received the virtualization error

(default) This computer doesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory

When I installed Docker Machine on a different physical development box, I just went into the BIOS, enabled hardware virtualization and Moved On With My Life.

Now that I'm wanting to run Docker Machine through a virtual server, I need to find a way to propagate the VT-X setting of the hardware CPU into the virtual CPUs of the server provisioned through Xen.

Is this possible?

K. Alan Bates
  • 223
  • 2
  • 12
  • 1
    http://wiki.xenproject.org/wiki/Nested_Virtualization_in_Xen – Michael Hampton Jan 25 '16 at 20:22
  • @yagmoth555 re: `L0 | L1` I have Hyper-V disabled. As far as I can tell, it's not being used at all in this chain. I have CentOS running Xen on L0, Windows Server running Virtual Box on L1 and trying to get TinyCore running inside VirtualBox. I'm not sure why you're trying to draw attention to Hyper-V. Please explain. – K. Alan Bates Jan 25 '16 at 22:52
  • @yagmoth555 Also note that I do not have control over L0. I only have control over L1 and downward. – K. Alan Bates Jan 25 '16 at 23:00
  • @yagmoth555 Microsoft said that **Hyper-V**'s support for Nested Virtualization is part of their 2016 Tech Preview. I'm not using Hyper-V at all, so I have no idea why you keep calling attention to it. I'm running Xen and VirtualBox. If you have information for those hypervisors working(or failing) in the configuration that I described, please refer me to it. But pointing me to information about a hypervisor that I'm not even using is not helpful unless you can explain how it actually **is** in use even though all of its services are disabled and this server was provisioned through Xen. – K. Alan Bates Jan 25 '16 at 23:03
  • @yagmoth555 ***what?*** – K. Alan Bates Jan 25 '16 at 23:07
  • I re-read the edit you did, as myself I was wondering why I thought to hyper-v, and until edit #5 it was ambiguous what you use inside the Windows VM. As per @MichaelHampton 's link, check the **know Issue** Virtual Box fails to boot on top of Xen (L1 panic while booting L2), maybe related to your issue. – yagmoth555 Jan 26 '16 at 13:38

1 Answers1

1

I can confirm your edit i might be wrong as mentioned in the previous answer, but you won't need vt-x to run docker containers, you might have two options. One to run Virtualbox in your windows server, because you might be able to use x32 virtual machines in it without vt-x enabled, and then have docker installed in a linux vm, or wait until docker will be able to run on windows without vt-x, as mentioned here https://stackoverflow.com/questions/30198189/can-i-run-docker-directly-on-a-non-vt-x-machine-no-virtual-machine-used

Sergiu
  • 53
  • 1
  • 7
  • The issue with this approach is that -unless an update has changed this- the only way to run Linux docker containers from within a Windows environment is to leverage boot2docker. My Windows environment is already provisioned as a virtual server. I have access to a *different* physical machine that may make your approach possible, but no access to L0 (CentOS) that is hosting xen which is hosting my L1 (Windows Server 2012 R2) which I am trying to serve as host to L2 (Tiny Core) It is the L1->L2 that is screwing up because Boot2Docker reports that it requires VT-X – K. Alan Bates Jan 25 '16 at 21:49
  • yep, is hard what you want to do, personally I would reconfigure my production and testing lab. I wold chose to use Xen or esxi on both enviorments, and virtualize my windows server if I really need one. Basically this way you wold have a loot more option to play with your environment and do what ever you want. – Sergiu Jan 25 '16 at 23:27