Linux Administration

Container dauerhaft konfigurieren – Ressourcen, Netzwerk und Sicherheit in Incus optimal einrichten

Ein neu erstellter Container funktioniert bereits nach wenigen Sekunden. Für den produktiven Einsatz sollten jedoch CPU, Arbeitsspeicher, Netzwerk und Sicherheitsoptionen angepasst werden. In diesem Teil der Incus-Serie erfährst du, wie du Container dauerhaft konfigurierst und ihre Ressourcen gezielt verwaltest.

4 min Lesezeit
Grafik: Incus Container optimal konfigurieren

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.