Ändern Sie das Datenverzeichnis von Docker

8

Wie kann ich das Datenverzeichnis von Docker ändern, in dem Docker den Container speichert (oder in dem lxc den Container speichert)? Ich habe auf meinem Server eine SSD und eine Festplatte und möchte, dass der Container auf der Festplatte gespeichert wird. Vielen Dank

ssd_rider
quelle

Antworten:

11

Ich glaube, dass Sie in diesem Handbuch eine gute Erklärung haben werden.

Sie können das Speicherbasisverzeichnis von Docker (wo sich Container und Images befinden) mit der Option -g ändern, wenn Sie den Docker-Dämon starten.

Ubuntu / Debian: Bearbeiten Sie Ihre /etc/default/dockerDatei mit der -gOption:DOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4 -g /mnt"

Fedora / Centos: Bearbeiten /etc/sysconfig/dockerund fügen Sie die -gOption in der Variablen other_args hinzu: z. other_args="-g /var/lib/testdir". Wenn es mehr als eine Option gibt, stellen Sie sicher, dass Sie sie in "" einschließen. Nach einem Neustart (Neustart des Service-Dockers) sollte Docker das neue Verzeichnis verwenden.

Die Verwendung eines Symlinks ist eine weitere Methode zum Ändern des Bildspeichers.

Achtung - Diese Schritte hängen davon ab, dass Ihr aktuelles / var / lib / docker ein tatsächliches Verzeichnis ist (kein Symlink zu einem anderen Speicherort).

1) Docker stoppen : service docker stop. Stellen Sie sicher, dass auf keinem Docker-Prozess ps faux ausgeführt wird

2) Double Check Docker läuft wirklich nicht. Schauen Sie sich das aktuelle Docker-Verzeichnis an: ls/var/lib/docker/

2b) Erstellen Sie ein Backup - tar -zcC /var/lib docker > /mnt/pd0/var_lib_docker-backup-$(date +%s).tar.gz

3) Verschieben Sie das /var/lib/dockerVerzeichnis auf Ihre neue Partition:mv /var/lib/docker /mnt/pd0/docker

4) Machen Sie einen Symlink: ln -s /mnt/pd0/docker /var/lib/docker

5) Werfen Sie einen Blick auf die Verzeichnisstruktur, um sicherzustellen, dass sie so aussieht wie vor dem MV: ls /var/lib/docker/(Beachten Sie den abschließenden Schrägstrich auf

6) Starten Sie die Docker-Sicherung service docker start

7) Starten Sie Ihre Container neu. Lösen Sie den Symlink.

Conrado Fonseca
quelle
Was ist der Grund für 4)? Wird es gebraucht? In meinem Fall möchte ich Docker-Dateien auf einem gemounteten RAID und nicht auf der Boot-Partition haben.
Roman Mik
9

In neueren Docker-Versionen unter Ubuntu bearbeiten Sie /etc/default/daemon.json wie folgt:

{
    "data-root": "/new/location"
}
MattK
quelle
2

Um das dataVerzeichnis dockerdarin zu ändern , muss es mit der Option ausgeführt werden -g /my/data. In meinem habe /etc/default/dockerich gesetzt:

DOCKER_OPTS="-g /srv/docker"

Siehe auch meine Notizen hier .

Um das dataVerzeichnis zu ändern, habe lxcich Folgendes eingegeben /etc/lxc/lxc.conf:

lxc.lxcpath = /srv/lxc

Stuart Cardall
quelle
1

Aktualisieren Sie auf Docker 1.13.0.

Aus den Versionshinweisen:

- New
The storage location of the Linux volume can now be moved
Snowcrash
quelle
1

Um die Antwort von @ MattK zu erweitern:

In der Docker-Dokumentation zur Steuerung des Docker-Dämons wird folgende plattformunabhängige Methode vorgeschlagen:

Bearbeiten Sie die Datei /etc/docker/daemon.json, um die Zeile zu enthalten

{
    "data-root": "/mnt/docker-data",
    (...)
}

Wo /mnt/docker-databefindet sich das Verzeichnis, in dem die Docker-Images und -Container gespeichert werden sollen?

Dann

sudo systemctl restart docker

Sie können überprüfen, ob es funktioniert hat, indem Sie ausführen

docker info

und suchen Sie nach dem Inhalt der Zeile, die mit beginnt Docker Root Dir:.

Siehe auch https://stackoverflow.com/a/50217666/2209313 und https://unix.stackexchange.com/q/452368/36043 .

Wanderlogik
quelle