Comment by seabrookmx

3 days ago

They both utilize all the linux c-group magic to containerize. So performance is roughly the same.

Incus is an LXD fork, and focuses on "system" containers. You basically get a full distro, complete with systemd, sshd, etc. etc. so it is easy to replace a VM with one of these.

podman and docker are focused on OCI containers which typically run a single application (think webserver, database, etc).

I actually use them together. My host machine runs both docker and incus. Docker runs my home server utilities (syncthing, vaultwarden, etc) and Incus runs a system container with my development environment in it. I have nested c-groups enabled so that incus container actually runs another copy of docker _within itself_ for all my development needs (redis, postgres, etc).

What's nice about this is that the development environment can easily be backed up, or completely nuked without affecting my host. I use VS Code remote SSH to develop in it.

The host typically uses < 10GB RAM with all this stuff running.. about half what it did when I was using KVM instead of Incus.

If you use the non LTS branch of incus it supports OCI containers. Have you tried that instead of running docker inside of a LXC container?

  • That feature might be able to replace my docker usage on the host, so I don't need it and incus side by side. Which would be pretty neat.

    Within the incus dev environment container though I'm pretty sure I want to keep docker, as I have a lot of tooling that expects it for better or worse (docker compose especially). It also doesn't appear incus integrates buildkit etc. so even if I used it here, I'd still need something else to _build_ OCI images.