Einleitung
Nach der erfolgreichen Installation stellt sich häufig die Frage: Wie funktioniert Incus eigentlich?
Auf den ersten Blick scheint alles recht einfach zu sein: Ein Befehl erstellt einen Container, ein anderer startet ihn. Tatsächlich steckt dahinter jedoch eine leistungsfähige Architektur, die verschiedene Komponenten intelligent miteinander verbindet.
Incus verwaltet Container und virtuelle Maschinen über einen zentralen Daemon. Images dienen als Vorlagen für neue Systeme, Storage Pools übernehmen die Datenspeicherung und virtuelle Netzwerke sorgen für die Kommunikation. Ergänzt wird das Ganze durch Profile, Projects und Devices, die eine flexible und übersichtliche Verwaltung ermöglichen.
Wer diese Architektur versteht, kann Incus effizient einsetzen und auch komplexe Umgebungen problemlos verwalten.
Die Architektur im Überblick
Die wichtigsten Komponenten von Incus sind:
- Incus Daemon
- Client (CLI)
- Images
- Container und virtuelle Maschinen
- Storage Pools
- Networks
- Profiles
- Projects
- Devices
- Cluster
Alle diese Bausteine arbeiten eng zusammen.
Ein typischer Ablauf sieht so aus:
- Der Administrator gibt einen Befehl über die Incus-CLI ein.
- Die CLI sendet den Befehl an den Incus-Daemon.
- Der Daemon verarbeitet die Anfrage.
- Das gewünschte Image wird verwendet.
- Der Container oder die virtuelle Maschine wird erstellt.
- Profile, Netzwerk und Storage werden automatisch eingebunden.
- Das System wird gestartet.
Dadurch bleibt die Bedienung einfach, obwohl im Hintergrund viele Prozesse ablaufen.
Der Incus-Daemon
Der Daemon ist das Herzstück von Incus.
Er läuft dauerhaft im Hintergrund und übernimmt sämtliche Verwaltungsaufgaben.
Zu seinen Aufgaben gehören:
- Container erstellen
- virtuelle Maschinen verwalten
- Images herunterladen
- Netzwerke konfigurieren
- Storage verwalten
- Snapshots erzeugen
- Backups erstellen
- API-Anfragen bearbeiten
Die CLI kommuniziert ausschließlich mit diesem Daemon.
Sein Status lässt sich jederzeit prüfen:
systemctl status incus
Starten:
sudo systemctl start incus
Stoppen:
sudo systemctl stop incus
Aktivieren beim Systemstart:
sudo systemctl enable incus
Die Incus-CLI
Die meisten Administratoren arbeiten über die Kommandozeile.
Typische Befehle sind:
incus list incus launch incus shell incus exec incus info
Die CLI selbst enthält keine Logik.
Sie dient lediglich als Schnittstelle zum Daemon.
Alternativ lässt sich Incus auch vollständig über die REST-API automatisieren.
Images
Ein Image ist die Vorlage für einen neuen Container oder eine virtuelle Maschine.
Man kann sich ein Image wie eine Installations-DVD vorstellen.
Incus lädt Images automatisch herunter und speichert sie lokal zwischen.
Unterstützt werden zahlreiche Distributionen:
- Debian
- Ubuntu
- Alpine Linux
- Fedora
- Rocky Linux
- AlmaLinux
- Arch Linux
- openSUSE
Verfügbare Images anzeigen:
incus image list images:
Debian suchen:
incus image list images: debian
Beim ersten Start eines Containers wird das benötigte Image automatisch heruntergeladen.
Weitere Container können anschließend wesentlich schneller erstellt werden.
Storage Pools
Jeder Container benötigt Speicherplatz.
Diesen verwaltet Incus über sogenannte Storage Pools.
Ein Storage Pool ist der zentrale Bereich, in dem Container, virtuelle Maschinen, Images und Snapshots gespeichert werden.
Unterstützte Backends sind unter anderem:
- dir
- ZFS
- Btrfs
- LVM
- Ceph
Je nach Umgebung bieten die verschiedenen Backends unterschiedliche Vorteile.
dir
- einfach
- keine Zusatzsoftware
- ideal zum Lernen
ZFS
- Snapshots
- Clones
- Komprimierung
- hohe Performance
- Datenintegrität
Btrfs
- Copy-on-Write
- Snapshots
- Prüfsummen
LVM
- klassische Volume-Verwaltung
- gute Performance
Ceph
- Clusterbetrieb
- verteilte Speicherung
- Hochverfügbarkeit
Storage Pools anzeigen:
incus storage list
Networks
Container benötigen Netzwerkzugriff.
Incus verwaltet Netzwerke vollständig selbst.
Standardmäßig wird eine Bridge angelegt:
incusbr0
Diese übernimmt:
- DHCP
- NAT
- IPv4
- IPv6
- DNS
Dadurch erhalten neue Container automatisch eine funktionierende Netzwerkverbindung.
Weitere Netzwerktypen sind:
- Bridge
- MacVLAN
- OVN
- Physical
- Routed
Netzwerke anzeigen:
incus network list
Projects
Projects dienen der logischen Trennung verschiedener Umgebungen.
Ein Beispiel:
Projekt „Entwicklung“
- Testserver
- Datenbanken
- GitLab
Projekt „Produktion“
- Webserver
- Reverse Proxy
- Nextcloud
Projekt „Kunde A“
- Webserver
- Datenbank
- Mailserver
Die einzelnen Projekte sind voneinander getrennt und besitzen eigene Ressourcen.
Gerade in Unternehmen sorgt das für Übersicht und Sicherheit.
Projects anzeigen:
incus project list
Profiles
Profiles gehören zu den wichtigsten Funktionen von Incus.
Ein Profil enthält wiederverwendbare Einstellungen.
Beispielsweise:
- CPU-Limit
- RAM-Limit
- Netzwerk
- Storage
- Devices
- Sicherheitsrichtlinien
Ein neues Profil kann auf beliebig viele Container angewendet werden.
Dadurch muss dieselbe Konfiguration nicht mehrfach erstellt werden.
Profile anzeigen:
incus profile list
Devices
Devices verbinden den Host mit Containern oder virtuellen Maschinen.
Typische Geräte sind:
- Netzwerkkarten
- Festplatten
- USB-Geräte
- GPU
- PCI-Geräte
- Serielle Schnittstellen
Beispiele:
- Ein USB-Stick soll im Container verfügbar sein.
- Eine NVIDIA-GPU soll für KI-Anwendungen genutzt werden.
- Ein zusätzliches Verzeichnis wird eingebunden.
- Eine zweite Netzwerkkarte wird hinzugefügt.
Diese Geräte werden über das jeweilige Profil oder direkt am Container konfiguriert.
Container und virtuelle Maschinen
Incus unterstützt zwei Betriebsarten.
Linux-Container
Container teilen sich den Kernel des Hosts.
Vorteile:
- extrem schnell
- geringer Speicherbedarf
- ideal für Linux-Dienste
Typische Anwendungen:
- Apache
- Nginx
- MariaDB
- PostgreSQL
- Nextcloud
- Gitea
Virtuelle Maschinen
Virtuelle Maschinen besitzen einen eigenen Kernel.
Sie laufen auf Basis von QEMU/KVM.
Vorteile:
- vollständige Hardwarevirtualisierung
- Windows möglich
- BSD möglich
- maximale Isolation
Sie eignen sich besonders für Anwendungen, die einen eigenen Kernel oder ein anderes Betriebssystem benötigen.
Clusterfähigkeit
Eine der leistungsfähigsten Funktionen von Incus ist der Clusterbetrieb.
Dabei arbeiten mehrere Server gemeinsam.
Ein Cluster ermöglicht:
- zentrale Verwaltung
- Lastverteilung
- Migration laufender Systeme
- Hochverfügbarkeit
- gemeinsame Storage-Lösungen
Typischer Aufbau:
Server 1
- Container
- Storage
Server 2
- Container
- Storage
Server 3
- Container
- Storage
Alle Server erscheinen als eine gemeinsame Incus-Umgebung.
Für kleine Homelabs ist diese Funktion meist nicht erforderlich. In Unternehmensumgebungen bietet sie jedoch erhebliche Vorteile hinsichtlich Ausfallsicherheit und Skalierbarkeit.
Zusammenspiel der Komponenten
Die Architektur von Incus folgt einem klaren Prinzip:
- Der Daemon verwaltet alle Ressourcen.
- Images dienen als Vorlagen für neue Systeme.
- Storage Pools speichern Container, virtuelle Maschinen und Snapshots.
- Networks stellen die Kommunikation sicher.
- Profiles definieren wiederverwendbare Einstellungen.
- Projects trennen unterschiedliche Umgebungen logisch voneinander.
- Devices verbinden Hardware mit Containern oder virtuellen Maschinen.
- Cluster ermöglichen den Betrieb über mehrere Server hinweg.
Durch dieses modulare Konzept bleibt Incus sowohl für kleine Einzelserver als auch für große Cluster übersichtlich und flexibel.
Die Architektur von Incus wirkt auf den ersten Blick umfangreich, folgt jedoch einem klaren und logischen Aufbau. Der zentrale Daemon koordiniert alle Aufgaben, während Images, Storage Pools, Netzwerke, Profiles und Projects jeweils einen klar definierten Zweck erfüllen. Dieses modulare Konzept macht Incus sowohl für Einsteiger als auch für professionelle Administratoren zu einer leistungsfähigen Plattform.
Wer die einzelnen Bausteine verstanden hat, wird sich in den folgenden Teilen der Serie deutlich leichter zurechtfinden.
Im nächsten Teil erstellen wir unseren ersten Linux-Container, greifen per Shell darauf zu und lernen die wichtigsten Verwaltungsbefehle im praktischen Einsatz kennen.