Wie migriere ich Docker, um einen anderen Speichertreiber zu verwenden?

Wie migriere ich Docker, um einen anderen Speichertreiber zu verwenden?

Ich habe einen Server, auf dem Docker mit Btrfs-Speichertreiber läuft. Wie kann ich ihn migrieren, um einen anderen Speichertreiber zu verwenden? Ich würde gerne Overlay2 verwenden.

Ich habe versucht, mit den Anweisungen zu migrierenHier:

  • Docker stoppen

  • Benennen Sie /var/lib/docker in /var/lib/docker.bak um

  • fügen Sie {"storage-driver": "overlay2"} zu /etc/docker/daemon.json hinzu

  • kopieren Sie /var/lib/docker.bak nach /var/lib/docker (um alle BTRFS-Snapshots „loszuwerden“)

  • Docker starten

Nach dieser Migration sind jedoch keine Container mehr vorhanden.

Ich nehme an, das liegt daran, dass das Verzeichnis immer noch Daten in /var/lib/docker/btrfsund nicht in enthält /var/lib/docker/overlay2(sie haben ein unterschiedliches „Layout“, das Umbenennen von btrfs in overlay2 reicht nicht aus).

Wie migriere ich von einem Speichertreiber zu einem anderen, sodass alle automatisch gestarteten Container weiterhin vorhanden sind und automatisch starten?

Antwort1

Subvolumes erfordern normalerweise nicht viel Arbeit (theoretisch basierend auf den Fedora-Dokumenten für BTRFS) - sollten möglich sein, rm -r /var/lib/docker/subvolumes/*aber aus irgendeinem Grund - DockerdunkelMagie - das funktioniert nicht.

TLDR: Ich habe das folgende Skript verwendet, das ich gefunden habezu diesem Kernzum Entfernen aller Untervolumes in/var/lib/docker/btrfs/subvolumes

  • Ich habe es leicht modifiziert, um echo "Deleting: $subvolume"sicherzustellen, dass ich nicht mein gesamtes System abfackeln würde

! Stellen Sie vor dem Ausführen sicher, dass Sie alle wichtigen Daten in Ihren Containern per Bind-Mount an Ihren Host gemountet haben, da im Folgenden alle Containerebenen entfernt werden.

for subvolume in /var/lib/docker/btrfs/subvolumes/*; do
    echo "Deleting: $subvolume"
    # Uncomment the next line after you've verified the list is correct.
    # btrfs subvolume delete $subvolume
done

verwandte Informationen