Ich habe die Container unter dem Verzeichnis /var/lib/docker/containers
gefunden, aber ich finde die Bilder nicht.
Was sind die Verzeichnisse und Dateien unter /var/lib/docker
?
Der Inhalt des /var/lib/docker
-Verzeichnisses variiert je nach dem Treiber, den Docker zum Speichern von verwendet.
Standardmäßig ist dies aufs
, kann aber abhängig von Ihrer Kernel-Unterstützung auf overlay
, overlay2
, btrfs
, devicemapper
oder zfs
zurückgreifen. In den meisten Orten wird dies aufs
sein, aber die RedHats gingen mit devicemapper
.
Sie können den Speichertreiber mit der Option -s
ODER --storage-driver=
manuell auf den Docker-Daemon einstellen.
/var/lib/docker/{driver-name}
enthält den treiberspezifischen Speicher für den Inhalt der Bilder. /var/lib/docker/graph/<id>
enthält jetzt nur Metadaten zum Bild in den json
- und layersize
-Dateien.Im Fall von aufs
:
/var/lib/docker/aufs/diff/<id>
hat den Dateiinhalt der Bilder./var/lib/docker/repositories-aufs
ist eine JSON-Datei, die lokale Bildinformationen enthält. Dies kann mit dem Befehl docker images
angezeigt werden.Im Fall von devicemapper
:
/var/lib/docker/devicemapper/devicemapper/data
speichert die Bilder/var/lib/docker/devicemapper/devicemapper/metadata
die MetadatenBei Verwendung der Docker for Mac-Anwendung werden die Container anscheinend im Verzeichnis VM gespeichert:
~/Library/Containers/com.docker.docker/Data/com.docker.driver.AMD64-linux/Docker.qcow2
[~ # ~] update [~ # ~] (mit freundlicher Genehmigung von mmorin ):
Ab dem 15. Januar 2019 scheint es nur diese Datei zu geben:
~/Library/Containers/com.docker.docker/Data/vms/0/Docker.raw
das enthält die Docker Disk und alle darin enthaltenen Bilder und Container.
Im speziellen Fall von Mac OS X oder Windows werden Ihre Docker-Images mit boot2docker in einer von boot2docker verwalteten VirtualBox VM gespeichert.
Diese VM wird an normaler Stelle von VirtualBox-Images gespeichert:
OS X: ~/VirtualBox VMs/boot2docker-vm
Windows: %USERPROFILE%/VirtualBox VMs/boot2docker-vm
Sie können es durch Ausführen zurücksetzen (WARNUNG: Dadurch werden alle Bilder zerstört, die Sie bisher erstellt und heruntergeladen haben):
boot2docker down
boot2docker destroy
boot2docker init
boot2docker up
Dies ist besonders nützlich, wenn Sie beim Erstellen/Debuggen eines Builds ohne die nützlichen Optionen --rm massenweise Zwischenbilder beibehalten haben. Ich zitiere sie hier als Referenz:.
docker build -t webapp --rm=true --force-rm=true .
anstatt:
docker build -t webapp .
Tatsächlich werden Docker-Bilder in zwei Dateien gespeichert, wie im folgenden Befehl gezeigt
$ docker info
Datendatei:
/var/lib/docker/devicemapper/devicemapper/data
Metadatendatei:
/var/lib/docker/devicemapper/devicemapper/metadata
Die Bilder werden in /var/lib/docker/graph/<id>/layer
gespeichert.
Beachten Sie, dass es sich bei Bildern nur um Unterschiede zum übergeordneten Bild handelt. Die übergeordnete ID wird mit den Metadaten des Bildes /var/lib/docker/graph/<id>/json
gespeichert.
Wenn Sie ein Bild docker run
. AUFS "mischt" alle Layer in einem verwendbaren Dateisystem zusammen.
Auf dem neu veröffentlichten Docker für Windows, das Hyper-V verwendet, befinden sich Daten auf der virtuellen Festplatte von Docker:
C:\Benutzer\Öffentlich\Dokumente\Hyper-V\Virtuelle Festplatten\MobyLinuxVM.vhdx
Sie können auch den 'Hyper-V-Manager' öffnen, um auf Docker/MobyLinuxVM zuzugreifen.
Für jemanden, der Docker-Toolbox verwendet (die Docker-Maschine verwendet), sind die Antworten zu boot2docker unter Mac OS X nicht gültig. Die Docker-Maschine VM heißt "default" und befindet sich im Verzeichnis /Users/<username>/.docker/machine/machines/default/
.
Auf Ubuntu können Sie mit laufenden Bildern "spielen"
Sudo baobab /var/lib/docker
Tatsächlich werden Bilder in /var/lib/docker/aufs/diff
gespeichert.
Wenn Sie Docker für MAC verwenden (nicht boot2docker
), lautet der Speicherort /Users/<</>UserName></>/Library/Containers/com.docker.docker/Data/
In Docker für Windows (natives Windows) lautet der Standardcontainerspeicher:
> docker info
...
Docker Root Dir: C:\ProgramData\Docker
...
Wie beantwortet hier , wenn Sie unter Mac sind, befindet es sich bei
/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.AMD64-linux/Docker.qcow2
Um die Antwort von Tristan zu erweitern, können Sie in Windows mit Hyper-V das Bild mit diesen Schritten von matthuisman verschieben:
In Windows 10
- Stoppen Sie Docker usw
- Geben Sie "Hyper-V Manager" in das Suchfeld der Taskleiste ein und führen Sie es aus.
- Wähle deinen PC im linken Fenster aus (meins heißt DESKTOP-CBP **)
- Klicken Sie mit der rechten Maustaste auf die richtige virtuelle Maschine (Meine ist Genannt MobyLinuxVM).
- Wählen Sie "Ausschalten" (wenn es läuft)
- Klicken Sie erneut mit der rechten Maustaste darauf und wählen Sie "Verschieben".
- Befolgen Sie die Anweisungen
Ich benutze den boot2docker für Docker unter Mac OSX, so dass die Bilder im /Users/<USERNAME>/VirtualBox VMs/boot2docker-vm/boot2docker-vm.vmdk
gespeichert werden.
Ich kann diese Frage nur für Ubuntu-Benutzer beantworten:
Das Stammverzeichnis des Dockers kann gefunden werden, wenn Sie den Befehl docker info
ausführen.
Das Docker-Verzeichnis wird in dieser Zeile angegeben: "Docker Root Dir: /var/lib/docker
"
Über die Docker-Images werden sie im Docker-Verzeichnis gespeichert: /var/lib/docker/aufs/diff/
Denken Sie daran, dass diese Dinge nicht in allen Docker-Versionen gleich sind. Derzeit verwende ich 1.12.3.
Wenn Sie bedenken, dass Docker noch in einer VM ausgeführt wird, beziehen sich die Systempfade auf VM und nicht auf das Mac-Osx-System. Wie es heißt, ist alles in einer VM -Datei enthalten:
/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.AMD64-linux/Docker.qcow2
Versuchen Sie, Alpine Image mit dieser Volume-Option auszuführen. Mit dem Befehl ls können Sie den VM -Host auflisten.
docker-Run --rm -it -v /:/vm-root Alpine: Edge-ls -l/vm-root
Danach einfach mal probieren:
andocklauf --rm -it -v /:/vm-root Alpine: Edge ls -l /vm-root/var/lib/docker
Jetzt können Sie den Docker-Ordner vom WM-Host aus auflisten
In Docker für Windows sind die Protokolle hier: %USERPROFILE%\AppData\Local\Docker
Überprüfen Sie den Docker-Ordner in /var/lib
.
die Bilder werden am folgenden Ort gespeichert:
/var/lib/docker/image/overlay2/imagedb/content
Auf Fedora verwendet Docker LVM für die Speicherung, falls verfügbar. Auf meinem System zeigt docker info
:
Storage Driver: devicemapper
Pool Name: vg01-docker--pool
Pool Blocksize: 524.3 kB
Base Device Size: 10.74 GB
Backing Filesystem: xfs
Data file:
Metadata file:
Data Space Used: 9.622 GB
...
In diesem Fall müssen Sie zur Erhöhung des Speichers LVM-Befehlszeilentools oder kompatible Partitionsmanager wie blivet verwenden.
Die Bilder werden im Verzeichnis /var/lib/docker
und anschließend im entsprechenden Verzeichnis storage driver
gespeichert.
Der verwendete Speichertreiber kann durch Ausführen des Befehls docker info
ermittelt werden.
Auf Debian Unstable/Sid
docker info
, um systemweite Informationen zu finden.
bilder werden unter /var/lib/docker/image/overlay2/imagedb/content
und gespeichert
container werden unter /var/lib/docker/containers
gespeichert.
docker-Version 18.06.0-ce
, API-Version 1.38
Laut der Anleitung Docker Getting Started befindet sich "Ihr erstelltes Image" in der lokalen Docker-Image-Registrierung Ihres Computers.
Das ist mir immer noch fremd, weil es jetzt zu der Frage führt. Wo befindet sich die lokale Docker-Image-Registrierung meines Computers?
Trotzdem denke ich definitiv, dass es sich lohnt, diese Informationen als Antwort zu teilen.
Ich konnte die Frage mit Docker Version 18.09 auf Macos mit den obigen Antworten nicht lösen und versuchte es erneut.
Die einzige wirkliche Lösung für mich war die Verwendung dieser docker-compose.yml
-Konfiguration:
version: '3.7'
...
services:
demo-service:
volumes:
- data-volume:/var/tmp/container-volume
volumes:
data-volume:
driver: local
driver_opts:
type: none
o: bind
device: /tmp/Host-volume
Nach dem Start mit docker-compose up
hatte ich endlich /tmp/Host-volume
von macos als beschreibbares Volume aus dem Container freigegeben:
> docker exec -it 1234 /bin/bash
bash-4.4$ df
Filesystem 1K-blocks Used Available Use% Mounted on
...
osxfs 488347692 464780044 21836472 96% /var/tmp/container-volume
Hoffe, das hilft auch anderen.
In Windows 2016 verwendet Docker (DockerMsftProvider) den Ordner "Windowsfilter" unter Docker Root
>docker info
...
Storage Driver: windowsfilter
...
Docker Root Dir: C:\ProgramData\docker
...
Es verwendet den Ordner "tmp" unter Docker Root zum Herunterladen der Dateien und löscht die Dateien, nachdem die heruntergeladenen Dateien in den Ordner "windowsfilter" extrahiert wurden.
Verwenden Sie den Befehl docker info
, um systemweite Informationen anzuzeigen. Der Speicherort kann variieren.
Je nach verwendetem Speichertreiber können zusätzliche Informationen angezeigt werden, z. B. Name des Pools, Datendatei, Metadatendatei, verwendeter Datenbereich, Gesamtdatenbereich, verwendeter Metadatenbereich und Gesamtmetadatenbereich.
In der Datendatei werden die Bilder gespeichert und in der Metadatendatei werden die Metadaten zu diesen Bildern gespeichert. Bei der ersten Ausführung weist Docker aus dem verfügbaren Speicherplatz auf dem Volume, auf dem
/var/lib/docker
bereitgestellt ist, eine bestimmte Menge an Daten- und Metadatenraum zu.
Hier ist das Beispiel auf Ubuntu (check Root Dir):
$ docker info
...
Server Version: 18.06.1-ce
Storage Driver: aufs
Root Dir: /var/snap/docker/common/var-lib-docker/aufs
...
Docker Root Dir: /var/snap/docker/common/var-lib-docker
...
Und hier ist das Beispiel zu Travis CI (siehe Docker Root Dir):
$ docker info
Server Version: 17.09.0-ce
Storage Driver: overlay2
Backing Filesystem: extfs
...
Docker Root Dir: /var/lib/docker
...
Sie können den --format
-Parameter verwenden, um diese Informationen in eine einzige Datei zu extrahieren, z.
$ docker info --format '{{.DriverStatus}}'
[[Root Dir /var/snap/docker/common/var-lib-docker/aufs] [Backing Filesystem extfs] [Dirs 265] [Dirperm1 Supported true]]
oder:
$ docker info --format '{{json .DriverStatus}}'
[["Root Dir","/var/snap/docker/common/var-lib-docker/aufs"],["Backing Filesystem","extfs"],["Dirs","265"],["Dirperm1 Supported","true"]]
benutze docker inspect container_id
Ordner unter MergedDir suchen
# example.
"MergedDir": "/var/lib/docker/overlay2/f40cc2ea8912ec3b32deeef5a1542a132f6e918acb/merged
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 aus:
Speicherort des Disk-Images (über den Browser bearbeitbar):
C:\Benutzer\Öffentlich\Dokumente\Hyper-V\Virtuelle Festplatten\DockerDesktop.vhdx
(es ist da - Dokumentenverzeichnis ist versteckt)