So I was thinking about installing a Windows 11 virtual machine and was wondering why would you install windows in an incus container? Isn’t incus built for and around LXC and as such is a Linux only model? Windows is not a LXC so would that not just be better to install in as a “Classic” VM?
Since Incus is going away, absolutely no reason to do this.
You can also run Windows in a docker container.
It works flawlessy for me and setup It via YAML not require anything fancy
I haven’t seen that in any of their releases. Do you know something that we don’t?
What is the benifit of installing it ina docker instead of a VM?
That you don’t, apparently, but it’s public information. Many of the threads discussing the changes to virtualization with 25.10 had pointed to Kris’ statements to that effect. We don’t know when it’s going to happen, but Kris has said Incus is going away entirely.
I’m not going to search the thread for the posts, but it’s in here:
And there’s a message in the general chat saying it will be completely from the base os installation
I gotcha if I read right incus is going away and libvirt is going to replace it and manager both LXC’s and VM’s. That makes sense and makes my question moot. If I wanted to install Windoze I would install it on a VM…
Theorically should be less resource hunghry, for sure Is way faster to deploy.
Potentially can be less reliable, but i think this can be only on specific use case/application.
I’m actually using a W10 VM with all the stuff needed to run dot net application (MSSQL, visual studio, visual studio code, IIS,… ), and i’m totally satisfied; I’m also tryng the same settings with a W11 but performance seems a bit lower; next step will be the Core version.
You can’t directly install Windows in an LXC or a Linux hosted Docker.
These technologies are fundamentally techniques for sharing the hosts kernel using network namespaces and other techniques.
To install Windows you need to use a Virtual Machine, and on Linux, you have KVM, The Kernel Virtual Machine, and much like how LXC and Docker are ways of taking advantage of kernel functionality, you’d normally use QEMU to manage a KVM instance.
Now, you can run QEMU in an LXC or Docker instance, and thats how you can install Windows in a container.
Incus started as an LXC orchestrator, but it can now orchestrate QEMU instances too.
And libvirt is similar, ie it orchestrates virtual machines, but has a driver for LXCs
And TrueNAS used to use libvirt for orchestrating QEMU, and then added Incus for LXC and VMs, and disabled libvirt in 25.04 release. The new Incus support was labelled Instances in the interface
The older Libvirt VM support was re-enabled in 25.04.2 and is named “Virtualization”, the Incus support was renamed “Containers”, and the ability to create Incus VMs (as opposed to LXCs) was disabled.
At this stage iX/TrueNAS have said that Incus is going away, and that libvirt will be used to supply LXC functionality.
Information on timelines and migration strategies has not been released.
It is currently possible to manualy migrate your Incus VMs to “classic” VMs if you choose.
As to why? Well, there’s probably a few reasons, but one could be that Incus is fairly opinionated and not very amenable to running “legacy” VMs and OSes, like Windows!
So, finally, if you want to install Windows, use the “Classic” Virtualization system, which is built on libvirt/QEMU/KVM (at least currently)
Thanks Stux. I understand. You always describe stuff succinctly and very understandable.
There’s some confusion here.
The “container” is really a Linux Container (LXC). That is in Fangtooth and will be in Goldeye.
Under the hood, the mechanism for supporting the LXC is changing from Incus to Libvirt, but the WebUI and capabilities are not changing.
So the change is simply (although probably not simple) is changing the management of LXC containers from incus to libvert.
Yes, TrueNAS will make the change without requiring users to do anything.