Tags

Diese Doku beschreibt, wie ein bestehender Incus-Container CTNAME in ein wiederverwendbares Image umgewandelt und auf einen anderen Server übertragen wird. Aus diesem Image kann auf dem Zielsystem wieder ein Container erstellt werden.

Es werden zwei Varianten gezeigt:

  1. Variante A (empfohlen): Container → Incus-Image → Export → Import → neuer Container
  2. Variante B: Snapshot → Export → Import → Wiederherstellung

Voraussetzungen

  • Incus ist auf Quell- und Zielserver installiert und funktionsfähig.
  • Du hast Root-Zugriff auf beide Server.
  • Netzwerkverbindung zwischen den Servern (z. B. via scp oder rsync).

Verwendete Platzhalter:

  • CTNAME – Name des Containers auf dem Quellserver
  • OTHERHOST – Hostname oder IP des Zielservers
  • CTIMAGE – Alias des zu erstellenden Images (frei wählbar)

Variante A (empfohlen): Container als Incus-Image veröffentlichen

Diese Variante erzeugt ein richtiges Incus-Image, das mehrfach verwendet werden kann (ähnlich wie ein Template).

1. Container ggf. stoppen

incus stop CTNAME

(Optional, aber saubere Images erhält man, wenn der Container gestoppt ist.)

2. Image aus Container erstellen

incus publish CTNAME --alias CTIMAGE
  • CTIMAGE ist ein frei wählbarer Alias, z. B. myapp-v1, ctname-img, etc.
  • Das Image liegt jetzt im Incus-Image-Store des Quellservers.

3. Image auf dem Quellserver nach /root/ exportieren

incus image export CTIMAGE /root/CTNAME-export

Es entstehen Dateien wie z. B.:

/root/CTNAME-export.tar.xz
/root/CTNAME-export.squashfs

4. Image-Dateien auf den Zielserver kopieren

Auf dem Quellserver:

scp /root/CTNAME-export.* root@OTHERHOST:/root/
  • Ersetze OTHERHOST durch Hostname oder IP des Zielservers.

5. Image auf dem Zielserver importieren

Auf dem Zielserver:

cd /root/
incus image import CTNAME-export.tar.xz CTNAME-export.squashfs --alias CTIMAGE
  • Jetzt steht das Image CTIMAGE im Image-Store des Zielservers zur Verfügung.

6. Neuen Container aus dem Image erstellen und starten

incus init CTIMAGE CTNAME
incus start CTNAME
  • CTNAME kann derselbe Name sein wie am Quellserver oder ein neuer Name.

Variante B: Snapshot exportieren und importieren

Diese Methode exportiert einen Snapshot als Tarball. Das Ergebnis ist kein "klassisches" Image, aber ein voll wiederherstellbarer Containerzustand.

1. Snapshot erstellen

incus snapshot CTNAME snap1
  • snap1 ist der Name des Snapshots (frei wählbar).

2. Snapshot exportieren

incus export CTNAME/snap1 /root/CTNAME-snap

Es entsteht z. B.:

/root/CTNAME-snap.tar.gz

3. Snapshot-Export auf Zielserver kopieren

Auf dem Quellserver:

scp /root/CTNAME-snap.tar.gz root@OTHERHOST:/root/

4. Snapshot auf dem Zielserver importieren

Auf dem Zielserver:

cd /root/
incus import CTNAME-snap.tar.gz CTNAME
  • Dadurch wird auf dem Zielserver ein Container CTNAME angelegt, der dem Snapshot entspricht.

Hinweise & Best Practices

Netzwerkkonfiguration

  • Nach dem Import kann der Container eine neue IP-Adresse und ggf. eine neue MAC-Adresse erhalten (abhängig vom Profil und der Netzkonfiguration).
  • Prüfe z. B. in /etc/network/, Systemd-Netzwerkkonfiguration oder im Incus-Profil, ob feste Adressen oder spezielle Regeln existieren.

Storage & Pfade

  • Die hier gezeigten Befehle gehen davon aus, dass der Standard-Storage-Pool verwendet wird.
  • Wenn du auf dem Zielserver andere Storage-Pools oder spezielle Profile verwendest, passe ggf. incus init / incus launch entsprechend an.

Mehrfachverwendung des Images

  • Variante A (Image CTIMAGE) eignet sich gut, wenn du mehrere Container mit identischer Basis benötigst.
  • Du kannst dann beliebig viele Container damit erstellen:
incus launch CTIMAGE CTNAME2
incus launch CTIMAGE CTNAME3

Aufräumen

  • Nicht mehr benötigte Exportdateien auf den Servern löschen:
rm /root/CTNAME-export.*
rm /root/CTNAME-snap.tar.gz
  • Nicht mehr benötigte Images in Incus löschen:
incus image delete CTIMAGE