Nach der Erstellung eines Containers arbeitet dieser zunächst mit den Standardeinstellungen von Incus. Für Testsysteme reicht das meist aus, im produktiven Betrieb empfiehlt es sich jedoch, die verfügbaren Ressourcen gezielt zu begrenzen und wichtige Einstellungen dauerhaft festzulegen.
Incus bietet hierfür zahlreiche Möglichkeiten. CPU-Kerne, Arbeitsspeicher, Hostname, DNS-Einstellungen oder der automatische Start beim Booten lassen sich individuell konfigurieren. Dadurch können mehrere Container sicher und effizient auf einem Host betrieben werden.
In diesem Beitrag lernst du die wichtigsten Konfigurationsmöglichkeiten kennen.
Die aktuelle Konfiguration anzeigen
Bevor Änderungen vorgenommen werden, lohnt sich ein Blick auf die aktuelle Konfiguration.
incus config show mein-container
Ausführliche Informationen liefert:
incus info mein-container
Hier werden unter anderem folgende Informationen angezeigt:
- CPU-Auslastung
- Arbeitsspeicher
- Netzwerk
- Storage
- Geräte
- Sicherheitsoptionen
CPU begrenzen
Standardmäßig darf ein Container sämtliche verfügbaren CPU-Kerne des Hosts nutzen.
Für produktive Umgebungen empfiehlt sich häufig eine Begrenzung.
Beispiel: Nutzung auf zwei CPU-Kerne beschränken.
incus config set mein-container limits.cpu=2
Alternativ können auch bestimmte CPU-Kerne verwendet werden.
incus config set mein-container limits.cpu=0,1
Dadurch arbeitet der Container ausschließlich auf den CPU-Kernen 0 und 1.
Die Einstellung kann jederzeit überprüft werden.
incus config get mein-container limits.cpu
Arbeitsspeicher begrenzen
Auch der verfügbare RAM lässt sich einschränken.
Beispiel:
incus config set mein-container limits.memory=2GiB
Oder:
incus config set mein-container limits.memory=4096MiB
Die Begrenzung verhindert, dass einzelne Container den gesamten Arbeitsspeicher des Hosts belegen.
Gerade auf Servern mit vielen Containern ist dies eine wichtige Sicherheitsmaßnahme.
Aktuelle Einstellung anzeigen:
incus config get mein-container limits.memory
CPU- und RAM-Limits gemeinsam setzen
Beispiel für einen Webserver:
incus config set mein-container limits.cpu=2 incus config set mein-container limits.memory=2GiB
Damit stehen dem Container maximal
- 2 CPU-Kerne
- 2 GB Arbeitsspeicher
zur Verfügung.
Automatischen Start aktivieren
Nach einem Neustart des Hosts werden Container standardmäßig nicht automatisch gestartet.
Dies lässt sich ändern.
Autostart aktivieren:
incus config set mein-container boot.autostart=true
Soll der Container mit einer kleinen Verzögerung starten:
incus config set mein-container boot.autostart.delay=30
Der Container startet dann 30 Sekunden nach dem Hostsystem.
Die Priorität lässt sich ebenfalls festlegen.
incus config set mein-container boot.autostart.priority=100
Container mit höherer Priorität werden zuerst gestartet.
Das ist besonders hilfreich für:
- Datenbanken
- DNS-Server
- Reverse Proxys
Hostnamen ändern
Der Hostname eines Containers kann jederzeit angepasst werden.
Innerhalb des Containers:
hostnamectl set-hostname webserver01
Alternativ kann der Hostname bereits beim Erstellen des Containers gewählt werden.
Ein sinnvoller Hostname erleichtert später die Administration erheblich.
Beispiele:
- webserver01
- nginx01
- db01
- mail01
- proxy01
DNS konfigurieren
Standardmäßig verwendet ein Container die DNS-Einstellungen des Incus-Netzwerks.
Die aktuelle Konfiguration befindet sich meist unter:
/etc/resolv.conf
Innerhalb des Containers kann geprüft werden:
cat /etc/resolv.conf
Eigene DNS-Server können beispielsweise eingetragen werden.
nameserver 1.1.1.1 nameserver 9.9.9.9
Oder:
nameserver 192.168.10.10
für einen eigenen DNS-Server im Netzwerk.
Bei produktiven Installationen empfiehlt sich meist ein interner DNS-Server oder Resolver.
Ressourcen überwachen
Die aktuelle Auslastung eines Containers zeigt:
incus info mein-container
Weitere Informationen:
incus list
Für detaillierte Messungen innerhalb des Containers stehen die bekannten Linux-Werkzeuge zur Verfügung.
CPU:
top
oder
htop
Speicher:
free -h
Festplatten:
df -h
Netzwerk:
ip a
Sicherheit erhöhen
Incus bringt bereits zahlreiche Sicherheitsmechanismen mit.
Dennoch sollten einige Empfehlungen beachtet werden.
Unprivilegierte Container verwenden
Dies ist bereits die Standardeinstellung.
Sie verhindert, dass Prozesse innerhalb des Containers Root-Rechte auf dem Host erhalten.
Nicht benötigte Geräte entfernen
Jedes eingebundene Gerät erhöht potenziell die Angriffsfläche.
Nur wirklich benötigte Geräte sollten eingebunden werden.
Ressourcen begrenzen
CPU- und RAM-Limits verhindern, dass ein Container den gesamten Host blockiert.
Regelmäßig aktualisieren
Container sollten genauso gepflegt werden wie normale Server.
apt update apt upgrade -y
Firewall verwenden
Auch innerhalb eines Containers kann eine Firewall eingesetzt werden.
Beispielsweise UFW:
apt install ufw
Danach können gezielt nur benötigte Ports freigegeben werden.
SSH absichern
Falls SSH genutzt wird:
- Passwortanmeldung deaktivieren
- Public-Key verwenden
- Fail2ban einsetzen
- Root-Login deaktivieren
Diese Maßnahmen erhöhen die Sicherheit erheblich.
Profile statt Einzelkonfigurationen nutzen
Sobald mehrere Container betrieben werden, empfiehlt sich der Einsatz von Profiles.
Ein Profil kann beispielsweise enthalten:
- 2 CPU-Kerne
- 2 GB RAM
- Bridge-Netzwerk
- Standard-DNS
- Autostart
- Sicherheitsoptionen
Neue Container übernehmen diese Einstellungen automatisch.
Dadurch entfällt die manuelle Konfiguration jedes einzelnen Containers.
Profile anzeigen:
incus profile list
Ein bestimmtes Profil anzeigen:
incus profile show default
Mit zunehmender Anzahl von Containern spart diese Vorgehensweise erheblich Zeit und sorgt für einheitliche Konfigurationen.
Beispiel für einen produktiven Webserver
Eine typische Konfiguration könnte folgendermaßen aussehen:
CPU:
incus config set webserver limits.cpu=2
RAM:
incus config set webserver limits.memory=2GiB
Autostart:
incus config set webserver boot.autostart=true
Startverzögerung:
incus config set webserver boot.autostart.delay=20
Damit erhält der Container feste Ressourcen und startet nach jedem Neustart des Hosts automatisch.
Häufige Fehler
Änderungen werden nicht übernommen
Einige Einstellungen wirken erst nach einem Neustart des Containers.
incus restart mein-container
Zu wenig Arbeitsspeicher
Wird das RAM-Limit zu niedrig gesetzt, können Anwendungen unerwartet beendet werden.
Die Auslastung sollte regelmäßig kontrolliert werden.
Zu viele CPU-Limits
Eine zu starke Begrenzung kann die Performance deutlich verschlechtern.
Insbesondere Datenbanken benötigen ausreichend CPU-Leistung.
Fazit
Mit wenigen Befehlen lässt sich ein Incus-Container optimal an den jeweiligen Einsatzzweck anpassen. Begrenzte CPU- und RAM-Ressourcen sorgen für eine faire Verteilung der Systemleistung, während Autostart, Hostname und DNS-Einstellungen den produktiven Betrieb erleichtern. In Kombination mit Sicherheitsmaßnahmen wie unprivilegierten Containern, regelmäßigen Updates und einer Firewall entsteht eine stabile und sichere Umgebung.
Im nächsten Teil der Serie beschäftigen wir uns mit virtuellen Maschinen in Incus. Du erfährst, wann sich virtuelle Maschinen gegenüber Containern eignen und wie du sie Schritt für Schritt erstellst und verwaltest.