Ich plane, Docker-Daten (Bilder und Container) auf ein separates Laufwerk zu verschieben, da sie viel Speicherplatz benötigen.
Soweit ich weiß, kann ich es /var/lib/docker
auf ein separates Laufwerk verschieben und einen Softlink dazu erstellen. Aber ich habe gelesen, dass BTRFS die beste Dateisystemoption für Docker ist.
Ich vermute jedoch, dass es nicht ausreicht, das externe Laufwerk auf BTRFS zu formatieren und vorhandene Ordner dorthin zu verschieben. Wie ich sehe, hängt der Inhalt dieses Ordners vom verwendeten Dateisystem ab.
Wie kann ich Docker-Ordner (Bilder und Container) auf dem externen Laufwerk mit einem anderen Dateisystem korrekt verschieben (neu erstellen)?
Antwort1
Wie Sie bereits sagten, reicht es nicht aus, die Docker-Images/Container einfach vom standardmäßigen AUFS-Laufwerk auf ein BTRFS-formatiertes Laufwerk zu verschieben oder zu kopieren. Sie können also als ersten Schritt alle Ihre Container als Images festschreiben und docker save
Befehle verwenden, um die Images als TAR-Dateien zu speichern. Nachdem Sie Docker für die Verwendung von BTRFS vorbereitet haben, laden Sie docker load
die Images in den neuen Speichertreiber.
Die Schritte wären ungefähr wie folgt - das habe ich in meiner Ubuntu 14.10-Box gemacht -
- Speichern Sie Ihre Bilder
docker save IMAGEID > /tmp/redis.tar
- BTRFS vorbereiten
mkfs.btrfs /dev/sdb mkdir /var/lib/docker-btrfs mount /dev/sdb /var/lib/docker-btrfs/
- Stoppen Sie Docker, richten Sie es so ein, dass es BTRFS nutzt und ausführt.
Dienst Docker Stopp docker -d -s btrfs --graph="/var/lib/docker-btrfs" -H unix:///var/run/docker.sock
Der obige Schritt kann auch durch Ändern von /etc/default/docker ausgeführt werden.
- Laden Sie die Bilder.
Docker-Laden --Input /tmp/redis.tar
Sie sollten in der Lage sein, die Bilder anzuzeigen und Container von hier aus auszuführen. Für Container können Sie auch Methoden ausprobieren export
, import
das habe ich allerdings noch nie ausprobiert.