1025 Stimmen

Wo werden Docker-Images auf dem Host-Computer gespeichert?

Ich konnte die Container unter dem Verzeichnis /var/lib/docker/containers finden, aber ich kann die Images nicht finden.

Was sind die Verzeichnisse und Dateien unter /var/lib/docker?

4voto

Chandra Pal Punkte 239

Überprüfen Sie den Docker-Ordner unter /var/lib

Die Images sind am folgenden Speicherort gespeichert:

/var/lib/docker/image/overlay2/imagedb/content

4voto

Nick Dong Punkte 3381

UMGEBUNG

Betriebssystem: Fedora 29 x86_64 Workstation

Docker:

[user@localhost ~]$ docker --version
Docker Version 19.03.5, Build 633a0ea838

Bildinformationen: "DockerVersion": "18.09.7"


Die Bilder sollten standardmäßig in /var/lib/docker/overlay2 gespeichert werden.


MEIN BEISPIEL

Bilder anzeigen:

[user@localhost ~]$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
neo4j               latest              8ed7463b8476        vor 12 Monaten       548MB
hello-world         latest              fce289e99eb9        vor 2 Jahren         1.84kB

Die Bildgröße beträgt 548M.

Sehen Sie die Bildinformationen von 8ed7463b8476.

[user@localhost ~]$ docker image inspect 8ed7463b8476

... ... ... ...

"DockerVersion": "18.09.7",

... ... ... ...

"GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2
/66dc24704d7ea5f1a5dee0bf4a5297cb78bcbd0d4b36206b8cca62cd4de7f2b1/diff:
/var/lib/docker/overlay2
/5ab91cf721359d43d01038233d397fd9ed1c4b3857c0c7d9a2dd7f2ac5eccad0/diff:
/var/lib/docker/overlay2
/e82fdf7ee3e37db0a11d9ca309245ae852425d24d6f5d3313dcf604cdddb397b/diff:
/var/lib/docker/overlay2
/9394543085d467010d0468fffb388e5616a89e2cf16c1c2b7b31aee4e542ae69/diff:
/var/lib/docker/overlay2
/c7c7a16e3dbaeea1a3a3b0bbca39f34f08f6b8ab15d753e6e68f9851c80d95b4/diff:
/var/lib/docker/overlay2
/3b470afdf8939b45159f3171f0bef2a27085b4b980e09f0c666fbdc58b944d97/diff:
/var/lib/docker/overlay2
/463ba63f79eb6b2f5466e7b71041bc346a8e9c4ebddd34d23422c719824a2340/diff",

... ... ... ...

Schauen wir uns die Größe dieser Ordner an.

[user@localhost ~]$ sudo du -sh /var/lib/docker/overlay2/66dc24704d7ea5f1a5dee0bf4a5297cb78bcbd0d4b36206b8cca62cd4de7f2b1
141M    /var/lib/docker/overlay2/66dc24704d7ea5f1a5dee0bf4a5297cb78bcbd0d4b36206b8cca62cd4de7f2b1
[user@localhost ~]$ sudo du -sh /var/lib/docker/overlay2/5ab91cf721359d43d01038233d397fd9ed1c4b3857c0c7d9a2dd7f2ac5eccad0/
28K /var/lib/docker/overlay2/5ab91cf721359d43d01038233d397fd9ed1c4b3857c0c7d9a2dd7f2ac5eccad0/
[user@localhost ~]$ sudo du -sh /var/lib/docker/overlay2/e82fdf7ee3e37db0a11d9ca309245ae852425d24d6f5d3313dcf604cdddb397b/
100K    /var/lib/docker/overlay2/e82fdf7ee3e37db0a11d9ca309245ae852425d24d6f5d3313dcf604cdddb397b/
[user@localhost ~]$ sudo du -sh /var/lib/docker/overlay2/9394543085d467010d0468fffb388e5616a89e2cf16c1c2b7b31aee4e542ae69/
310M    /var/lib/docker/overlay2/9394543085d467010d0468fffb388e5616a89e2cf16c1c2b7b31aee4e542ae69/
[user@localhost ~]$ sudo du -sh /var/lib/docker/overlay2/c7c7a16e3dbaeea1a3a3b0bbca39f34f08f6b8ab15d753e6e68f9851c80d95b4/
36K /var/lib/docker/overlay2/c7c7a16e3dbaeea1a3a3b0bbca39f34f08f6b8ab15d753e6e68f9851c80d95b4/
[user@localhost ~]$ sudo du -sh /var/lib/docker/overlay2/3b470afdf8939b45159f3171f0bef2a27085b4b980e09f0c666fbdc58b944d97/
9.5M    /var/lib/docker/overlay2/3b470afdf8939b45159f3171f0bef2a27085b4b980e09f0c666fbdc58b944d97/
[user@localhost ~]$ sudo du -sh /var/lib/docker/overlay2/463ba63f79eb6b2f5466e7b71041bc346a8e9c4ebddd34d23422c719824a2340/
76M /var/lib/docker/overlay2/463ba63f79eb6b2f5466e7b71041bc346a8e9c4ebddd34d23422c719824a2340/

Wir können sehen, dass die Größe nahe an 548M liegt.

Wir können das Bild auch in eine Ausgabedatei speichern.

[user@localhost ~]$ docker save -o neo4j.image.tar 8ed7463b8476
[user@localhost ~]$ du -sh neo4j.image.tar 
528M    neo4j.image.tar

Wir können das Paketarchiv extrahieren und die Größen der Dateien im Paket überprüfen.

[user@localhost neo4j.image]$ du -sh *
16K 2f0dd5fb60a940719a3e781133611cc64c2acded03bd47e04b0997fd0c1dae50
8.7M    73819037a38eabeb7c622533e4058c84f5ff106475a1aba78a278f8b36c172f7
309M    8d31d715b324a2ae3ccb1577e981d492f40e34db6371f0858da925ef02b5762e
12K 8ed7463b84760f09b1b86a732ee6f295baaadffe72ce4fdb7ad306fe5e096bbb.json
36K 966e726ff1d9be9dca68014cda6f1ecf974365c553b82ea3834fff5d73ea593e
70M a32776b9621e916e8714389b1037bf47253a2d3d1c806ad515623d2150c92485
60K d82868a318b95466f213136f81cd7258518744da72f46ca51b04b35f2351f46a
16K e62169d79fab44bebb0a455b01af5f636bace7673a1d38fc092daad77d51cd0e
141M fe8014622f7933e178b9005deffda3eb4828703eb7eca93b5485232930e3916b
4.0K    manifest.json

Wir können auch den Ordner /var/lib/docker/overlay2/ archivieren, um die Größe des Pakets mit den Bilddateien zu vergleichen. Die Größe ist ebenfalls nahe an der Bildgröße.

Weitere hilfreiche Informationen:

Docker-Bild - Zusammengeführte/Diff-/Arbeits-/LowerDir-Komponenten des GraphDrivers,

Wo sind Docker-Bilder gespeichert? Erklärung der Docker-Container-Pfade,

Overlay-Dateisystem

3voto

Jimmix Punkte 4684

Verwenden Sie den Befehl docker info, um die Host-Einstellungen des Docker einschließlich des Speicherpfads zu erhalten.

Um nur den Stammweg für den Docker-Speicher zu erhalten, können Sie Folgendes verwenden:

docker info | grep 'Docker-Root-Verzeichnis:' | cut -d':' -f2 | sed 's/^ *//g'

Dies ergibt für die Standardinstallation von Ubuntu 22.04 und docker --version = Docker Version 20.10.17, Build 100c701 den Pfad:

/var/lib/docker

Wenn Sie den Inhalt dieses Verzeichnisses mit Größen auflisten möchten, verwenden Sie den Befehl:

du -h -d 1 .

ergibt Ergebnisse (andere Verzeichnisse):

444K    ./buildkit
4,0K    ./containers
4,0K    ./runtimes
16K     ./plugins
4,0K    ./trust
4,0K    ./tmp
100K    ./network
22M     ./image
2,0G    ./volumes
4,0K    ./swarm
9,0G    ./overlay2

Um den Docker-Stammweg mit einem der Verzeichnisnamen zu versehen, fügen Sie am Ende ein weiteres sed hinzu sed 's/$/\/image/g' für die Hinzufügung von /image

Befehl:

docker info | grep 'Docker-Root-Verzeichnis:' | cut -d':' -f2 | sed 's/^ *//g' | sed 's/$/\/image/g'

ergibt:

/var/lib/docker/image

Befehl:

docker info | grep 'Docker-Root-Verzeichnis:' | cut -d':' -f2 | sed 's/^ *//g' | sed 's/$/\/overlay2/g'

ergibt:

/var/lib/docker/overlay2

Auch wenn die Namen der Verzeichnisse selbstverständlich erscheinen mögen, werden die Inhalte der Bilder nicht im Verzeichnis image (Größe 22M) gespeichert, sondern eher die Informationen zu den Bildern. /var/lib/docker/image/overlay2 in meinem Fall und insbesondere die Datei /var/lib/docker/image/overlay2/repositories.json, die die Namen der Bilder und die entsprechenden Daten zu den overlay2-Schichten enthält.

Die tatsächlichen Daten der Bilder (und ihrer Schichten) werden in /var/lib/docker/overlay2 (Größe 9,0G) gespeichert

Bitte beachten Sie, dass das System overlay2, in dem die schweren Daten der Bilder gespeichert sind, ein Schichtungssystem ist, das von Docker verwendet wird, aber dieses Schichtungssystem ist eines von vielen, die Docker möglicherweise verwendet (jetzt oder in der Zukunft). Daher kann das Basieren auf fest codierten Pfaden fragil sein.

Insbesondere wenn Ihre Absicht darin besteht, die Bilder in eine Datei zu exportieren/speichern, sollten Sie nach speziellen Befehlen suchen:

Was ist der Unterschied zwischen Speichern und Exportieren in Docker?

Mit dem Befehl aus der oben genannten Frage können Sie sogar alle Ihre Bilder in einer Datei speichern, diese komprimieren und dann an anderer Stelle mit einem einzigen Befehl importieren.

Wenn Sie sich an die Docker-Pfade halten möchten, z.B. für die Erstellung von Backups, empfehle ich immer, den Stammweg zu verwenden, z.B.:

/var/lib/docker

generiert durch den Befehl docker info, insbesondere können auch wichtige Daten darin enthalten sein:

/var/lib/docker/volumes

das z.B. für das Abbild der Datenbank, das ein Volume zur Speicherung der Daten verwendet, erforderlich ist.

3voto

theRiley Punkte 929

Umgebung: Windows 10 Pro, Docker Desktop 2.0.3.0 Edge

Klicken Sie mit der rechten Maustaste auf das Docker-Symbol in der Taskleiste und wählen Sie Einstellungen - Erweitert :

Festplatten-Image-Speicherort (über den Browser bearbeitbar):

C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks\DockerDesktop.vhdx

(es ist dort - das Dokumenteverzeichnis ist versteckt)

2voto

shanmuga raja Punkte 645

In Windows 2016 verwendet Docker (DockerMsftProvider) den Ordner "windowsfilter" unter dem Docker-Root-Verzeichnis

>docker info
...
Speichertreiber: windowsfilter
...
Docker-Root-Verzeichnis: C:\ProgramData\docker
...

Es verwendet den "tmp"-Ordner unter dem Docker-Root, um die Dateien herunterzuladen, und löscht die Dateien nach dem Extrahieren der heruntergeladenen Dateien in den "windowsfilter"-Ordner.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X