
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/btrfs
und 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