newsnowlabs / runcvm

RunCVM (Run Container VM) is an experimental open-source Docker container runtime, for launching standard container workloads - as well as Systemd, Docker, even OpenWrt - in VMs using 'docker run`
Apache License 2.0
72 stars 4 forks source link

[Question] Support for non Linux based images (FreeBSD & Windows)? #7

Closed GrabbenD closed 3 months ago

GrabbenD commented 9 months ago

Context

I'm trying to run as much as possible in containers to separate different workloads while keeping overhead to minimum/none. Another requirement of mine is having a nice dashboard like Portainer to conveniently manage my homelab on-the-go which brings me to my question:

Question

Is it possible to use this project to spin up non Linux based images like a pfSense (FreeBSD) server and Windows LTSC?

struanb commented 9 months ago

@GrabbenD Thanks for your interest in RunCVM. To your question, that's an interesting idea.

Of course it's possible to run FreeBSD and Windows in a KVM VM. But a key feature of RunCVM is its ability to launch a VM using the host container's filesystem as its filesystem, using virtiofs. Googling suggests FreeBSD and Windows do offer virtiofs support. While it might be possible to boot FreeBSD off a virtiofs root fs, I doubt Windows can be.

In any case, the VM could certainly not be booted using the host container's / as its / - which is the current logic - since a Linux container filesystem needs to be a Linux filesystem.

Potentially a KVM VM could be booted off a subdirectory containing a FreeBSD root filesystem (assuming the FreeBSD kernel was available, and the RunCVM init scripts were modified to be made compatible with FreeBSD). Sounds like a potentially interesting exercise. An ambition of RunCVM is certainly to be able to launch non-x86_64 Docker images this way (using QEMU machine translation).

Alternatively if the Docker container image contained, or downloaded a FreeBSD, or Windows disk image, then a VM could certainly be launched using that image as a boot disk. Others have used this approach to launch FreeBSD, even Mac OS, in a VM using Docker containers. I'm not sure what the particular value would be of using RunCVM to take this approach, as opposed to e.g. https://github.com/joshkunz/qemu-docker.