I am trying to execute a codebase (detect and track by facebook) inside the docker container that requires GPU access. My docker image is linux based with CUDA toolkit installed however I cannot see any GPU devices in proc filesystem.
The host machine is windows with CUDA 9 toolkit and drivers installed.
When I try to execute the code it says:
CUDA driver version is insufficient for CUDA runtime version
On searching, I realized, I can leverage nvidia-docker plugin to map the host nvidia drivers to container OS but by the looks of it, I couldn't find any support for windows.
Is there any other way around to execute the codebase inside docker container on my windows OS?
It seems that this is not possible on any Windows OS.
https://github.com/NVIDIA/nvidia-docker/wiki/Frequently-Asked-Questions#is-microsoft-windows-supported
Related
i recently started to move our c++ render tests inside docker containers.
I managed to run tests with a Linux based container with xorg and nvidia toolkit in Linux just fine. But I'm struggling to find a similar solution for windows based image (windows:2004).
Currently I run in a "process" isolation mode which allows me to pass gpu, but the tests require a surface to render, so without a monitor they fail.
My Environment:
Docker Desktop v4.11.0
Docker Engine v20.10.17
Windows 10 Enterprise 21H2 19044.1826
DirectX WDDM WDDM 2.7
I'm using windows official image mcr.microsoft.com/windows:2004
So my question is can I run similar setup as I do for Linux with docker, but for windows?
I am using docker desktop on windows 10. I downloaded an image for windows server core 1909.
then created two containers from the same image.
Docker run -it mcr.microsoft.com/windows/servercore:1909 powershell.exe
when I ran sysinfo on both, it gave me different hostname for both OS.
how do I see that kernel is shared? because I see these are two different VMs which is no different than hyper-v VM of the core OS.
I though docker container is sharing a kernel but I don't see the same OS underneath?
any idea?
Ok i got the answer also. There is concept of hyper-v isolation level for containers in windows. so if the host is not same version as of the container, you will get what you call hyper-v isolation which is essentially not a process isolation, its rather a virtual machine like traditional thing. no shared kernel.
True container concept which is actually shared kernel is only possible on windows server host and when used container version which is also same.
https://learn.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-1909%2Cwindows-10-1809
Because of some constraints I will have to build Linux user space applications for PowerPC QorIQ (P1020) using Windows environment.
Has anyone tried it and could recommend some toolchain (working natively in Win 7)?
Using virtual machines for building applications is not acceptable. What can be done on VM is only kernel and rootfs preparation.
There are some toolchains like http://gnutoolchains.com/powerpc-eabi/ however they do not provide Linux libraries. I guess I need something like powerpc-fsl-linux-gcc.exe.
I have also tried to attach meta-mingw layer to Yocto and bitbake meta-toolchain, but I'm not sure if it's the right path - I got many build errors.
I am running a game on Windows, and it requires every OS can only run one. And If I want to run more, currently I open vmware and run the game inside. But the problem is it takes too much memory and disk to run a whole another virtual OS. I know docker will reduce this, but it doesn't seem to support Windows.
Am I right? If so, any other solutions?
Docker uses LXC (linux containers) so cannot run a Windows operating system.
You can use docker on Windows using a boot2docker VM, but this is not the same as docker running a Windows operating system (your containers will run unix based operating systems inside the boot2docker VM).
To do what you're after, you'll need to use separate VMs.
Windows has a application-virtualisation tool called App-V.
Linux appears to have a similar tool called Docker.
My question is - is there a Docker equivalent for MacOS X? (ie without having to spin up a Linux virtual machine on VirtualBox?)
There is no strict analog for OS X. If you are against spinning up a virtual Linux machine, your options are:
A simple chroot jail. The jailkit utility can help you out with this.
For your own OS X applications, using App Sandbox to limit the resources your app has access to.
Again, neither of these is just like Docker 0.x, which uses LXC under the covers.
The chroot solution is closer, since it is one of the components that LXC is built on. However, it doesn't provide kernel namespaces or anything like cgroups — both of which are two very important parts of LXC.