J'ai réussi à trouver les conteneurs sous le répertoire /var/lib/docker/containers
, mais je ne trouve pas les images.
Quels sont les répertoires et fichiers sous /var/lib/docker
?
J'ai réussi à trouver les conteneurs sous le répertoire /var/lib/docker/containers
, mais je ne trouve pas les images.
Quels sont les répertoires et fichiers sous /var/lib/docker
?
Réponses:
Le contenu du /var/lib/docker
répertoire varie en fonction du pilote que Docker utilise pour le stockage .
Par défaut , ce sera aufs
mais peut revenir à overlay
, overlay2
, btrfs
, devicemapper
ou en zfs
fonction de votre soutien du noyau. Dans la plupart des endroits, ce sera le cas, aufs
mais les chapeaux rouges sont allés de pairdevicemapper
.
Vous pouvez définir manuellement le pilote de stockage avec l' option -s
ou--storage-driver=
sur le démon Docker .
/var/lib/docker/{driver-name}
contiendra le stockage spécifique au pilote pour le contenu des images. /var/lib/docker/graph/<id>
contient désormais uniquement des métadonnées sur l'image, dans les fichiers json
et layersize
.Dans le cas de aufs
:
/var/lib/docker/aufs/diff/<id>
a le contenu du fichier des images./var/lib/docker/repositories-aufs
est un fichier JSON contenant des informations sur l'image locale. Cela peut être consulté avec la commande docker images
.Dans le cas de devicemapper
:
/var/lib/docker/devicemapper/devicemapper/data
stocke les images/var/lib/docker/devicemapper/devicemapper/metadata
les métadonnéesdocker info
et trouvez l'emplacement réel spécifique à votre configuration .
Docker for Mac
avec 2 images de 1,5 Go chacune et je n'ai /var/lib
pas de répertoire docker
.
Lors de l'utilisation de l'application Docker pour Mac, il apparaît que les conteneurs sont stockés dans la machine virtuelle située à:
~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
MISE À JOUR (Gracieuseté de mmorin ):
Au 15 janvier 2019, il semble qu'il n'y ait que ce fichier:
~/Library/Containers/com.docker.docker/Data/vms/0/Docker.raw
qui contient le Docker Disk et toutes les images et conteneurs qu'il contient.
ubuntu
, nginx
), ou est-ce l'emplacement pour tous les conteneurs? La question d'origine demande des images , pas des conteneurs ...
Docker for Mac
avec deux images de 1,5 Go chacune et je n'ai ~/Library/Containers/Data/com.docker.docker/Data
pas de répertoire com.docker.driver.amd64-linux
et le seul gros fichier est vms/0/Docker.raw
avec 3,6 Go.
du -hd1 ~/Library/Containers/com.docker.docker/Data/
c'était l'ancienne façon de faire, maintenant elle a changé. Ignorez cette réponse à partir de 2019
Dans le cas particulier de Mac OS X ou Windows, à l'aide de boot2docker, vos images Docker sont stockées dans une machine virtuelle VirtualBox gérée par boot2docker.
Cette VM sera stockée à la place normale des images VirtualBox:
OS X: ~/VirtualBox VMs/boot2docker-vm
Les fenêtres: %USERPROFILE%/VirtualBox VMs/boot2docker-vm
Vous pouvez le réinitialiser en exécutant (AVERTISSEMENT: cela détruira toutes les images que vous avez construites et téléchargées jusqu'à présent):
boot2docker down
boot2docker destroy
boot2docker init
boot2docker up
Ceci est particulièrement utile si vous avez conservé des tonnes d'images intermédiaires lors de la construction / débogage d'une construction sans les options --rm utiles, je les cite ici pour référence:
docker build -t webapp --rm=true --force-rm=true .
au lieu de:
docker build -t webapp .
%USERPROFILE%\.docker\machine\machines
(veuillez noter l'arrêt complet dans le chemin)
C:\Users\Public\Documents\Hyper-V\Virtual hard disks\MobyLinuxVM.vhdx
En fait, les images Docker sont stockées dans deux fichiers comme indiqué par la commande suivante
$ docker info
Fichier de données:
/var/lib/docker/devicemapper/devicemapper/data
Fichier de métadonnées:
/var/lib/docker/devicemapper/devicemapper/metadata
docker info
est très utile, mais la sortie Docker Root Dir: /var/lib/docker
n'indique pas l'emplacement de stockage d'image (voir la réponse spécifique à Mac ci-dessus).
Sur le nouveau Docker pour Windows, qui utilise Hyper-V, les données se trouvent sur le disque dur virtuel Docker:
C: \ Users \ Public \ Documents \ Hyper-V \ Disques durs virtuels \ MobyLinuxVM.vhdx
Vous pouvez également ouvrir le «Gestionnaire Hyper-V» pour accéder à Docker / MobyLinuxVM.
C:\ProgramData\docker\windowsfilter
pour moi. Plus d'infos: stackoverflow.com/a/39971954/188740
Les images sont stockées dans /var/lib/docker/graph/<id>/layer
.
Notez que les images ne diffèrent que de l'image parente. L'ID parent est stocké avec les métadonnées de l'image /var/lib/docker/graph/<id>/json
.
Lorsque vous docker run
une image. AUFS «fusionnera» toutes les couches en un seul système de fichiers utilisable.
Sur Ubuntu, vous pouvez "jouer" avec des images en cours d'exécution
sudo baobab /var/lib/docker
En fait, les images sont stockées dans /var/lib/docker/aufs/diff
Pour quelqu'un qui utilise Docker toolbox (qui utilise docker-machine), les réponses concernant boot2docker sur Mac OS X ne sont pas valides. La VM docker-machine est appelée "par défaut" et elle existe dans le /Users/<username>/.docker/machine/machines/default/
répertoire.
Dans Docker pour Windows ( Windows natif), le stockage de conteneur par défaut est à:
> docker info
...
Docker Root Dir: C:\ProgramData\Docker
...
docker build
commande et je ne vois pas de fichier qui, je pense, est le fichier image. Je vois des dossiers et des fichiers texte (par exemple service.txt). Quel type de fichier et avec quelle extension de fichier le docker build
crée-t-il?
Si vous utilisez Docker pour MAC (non boot2docker
), l'emplacement est/Users/<</>UserName></>/Library/Containers/com.docker.docker/Data/
jasper@~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux $ ls -lh | grep Docker -rw-r--r--@ 1 jasper staff 6.3G May 25 19:20 Docker.qcow2
j'ai trouvé l'image. Mais ce ne sont pas les conteneurs. Je ne les vois pas vraiment dans ce répertoire de données ..
Comme indiqué ici , si vous êtes sur Mac, il se trouve à l'adresse
/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
En développant la réponse de Tristan, dans Windows avec Hyper-V, vous pouvez déplacer l'image avec ces étapes de matthuisman:
Sous Windows 10,
- Arrêter le docker, etc.
- Tapez "Hyper-V Manager" dans la zone de recherche de la barre des tâches et exécutez-le.
- Sélectionnez votre PC dans le volet de gauche (le mien s'appelle DESKTOP-CBP **)
- Faites un clic droit sur la bonne machine virtuelle (la mienne s'appelle MobyLinuxVM)
- Sélectionnez "Désactiver" (s'il est en cours d'exécution)
- Faites un clic droit dessus et sélectionnez "Déplacer"
- Suivez les invites
docker build
commande. Je suis sur un ordinateur Windows 10. Je regarde dans C: \ Users \ Public \ Documents \ Hyper-V \ Virtual hard disks, mais tout ce que je vois est MobyLinuxVM.vhdx. Où sont stockées les images réelles?
Si vous gardez à l'esprit que Docker est toujours en cours d'exécution sur une machine virtuelle, les chemins d'accès au système sont relatifs à la machine virtuelle et non au système Mac Osx. Comme il est dit, tout est contenu dans un fichier VM:
/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
Essayez d'exécuter Alpine Image avec cette option de volume et la commande ls, vous pouvez répertorier l'hôte VM:
docker run --rm -it -v /: / vm-root alpine: edge ls -l / vm-root
Après cela, essayez simplement:
docker run --rm -it -v /: / vm-root alpine: edge ls -l / vm-root / var / lib / docker
Maintenant, vous pouvez répertorier le dossier Docker à partir de l'hôte VM
J'utilise le boot2docker pour Docker sur Mac OSX, donc les images sont stockées dans le /Users/<USERNAME>/VirtualBox VMs/boot2docker-vm/boot2docker-vm.vmdk
.
Je ne peux répondre à cette question que pour les utilisateurs d'Ubuntu:
Le répertoire racine de docker peut être trouvé lorsque vous exécutez la commande docker info
Le répertoire Docker sera indiqué dans cette ligne: " Docker Root Dir: /var/lib/docker
"
À propos des images docker, elles sont stockées dans le répertoire docker:
/var/lib/docker/aufs/diff/
N'oubliez pas que ces choses ne sont pas les mêmes dans toutes les versions de docker. Actuellement, j'utilise 1.12.3.
Utilisez la docker info
commande pour afficher des informations à l'échelle du système et l'emplacement peut varier.
Selon le pilote de stockage utilisé, des informations supplémentaires peuvent être affichées, telles que le nom du pool, le fichier de données, le fichier de métadonnées, l'espace de données utilisé, l'espace de données total, l'espace de métadonnées utilisé et l'espace de métadonnées total.
Le fichier de données est l'endroit où les images sont stockées et le fichier de métadonnées est l'endroit où les métadonnées concernant ces images sont stockées. Lorsqu'il est exécuté pour la première fois, Docker alloue une certaine quantité d'espace de données et d'espace de métadonnées à partir de l'espace disponible sur le volume sur lequel
/var/lib/docker
est monté.
Voici l'exemple sur Ubuntu (vérifiez 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
...
Et voici l'exemple sur Travis CI (voir Docker Root Dir ):
$ docker info
Server Version: 17.09.0-ce
Storage Driver: overlay2
Backing Filesystem: extfs
...
Docker Root Dir: /var/lib/docker
...
Vous pouvez utiliser un --format
paramètre pour extraire ces informations dans un seul fichier, par exemple
$ docker info --format '{{.DriverStatus}}'
[[Root Dir /var/snap/docker/common/var-lib-docker/aufs] [Backing Filesystem extfs] [Dirs 265] [Dirperm1 Supported true]]
ou:
$ docker info --format '{{json .DriverStatus}}'
[["Root Dir","/var/snap/docker/common/var-lib-docker/aufs"],["Backing Filesystem","extfs"],["Dirs","265"],["Dirperm1 Supported","true"]]
vérifier le dossier docker dans /var/lib
les images sont stockées à l'emplacement ci-dessous:
/var/lib/docker/image/overlay2/imagedb/content
/var/lib/docker/image/overlay2/
. Notez également que c'est le cas du fait que votre moteur Docker utilise overlay2
comme pilote de stockage.
Environnement: Windows 10 Pro, docker desktop 2.0.3.0 edge
cliquez avec le bouton droit sur l'icône de docker dans la barre d'état système, sélectionnez les paramètres - avancés:
Emplacement de l'image disque (modifiable via le navigateur):
C: \ Users \ Public \ Documents \ Hyper-V \ Virtual Hard Disks \ DockerDesktop.vhdx
(c'est là - le répertoire Documents est caché)
docker build
commande?
Sur Fedora, Docker utilise LVM pour le stockage s'il est disponible. Sur mon système docker info
montre:
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
...
Dans ce cas, pour augmenter le stockage, vous devrez utiliser des outils de ligne de commande LVM ou des gestionnaires de partition compatibles comme blivet .
Dans Windows 2016, docker (DockerMsftProvider) utilise le dossier "windowsfilter" sous la racine du docker
>docker info
...
Storage Driver: windowsfilter
...
Docker Root Dir: C:\ProgramData\docker
...
Il utilise le dossier "tmp" sous la racine docker pour télécharger les fichiers et il supprime les fichiers après avoir extrait les fichiers téléchargés dans le dossier "windowsfilter".
Je n'ai pas pu résoudre la question avec Docker version 18.09 sur macos en utilisant les réponses ci-dessus et j'ai réessayé.
La seule solution réelle pour moi était d'utiliser cette docker-compose.yml
configuration:
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
Après le lancement avec docker-compose up
j'ai finalement eu /tmp/host-volume
des macos partagées en tant que volume inscriptible à partir du conteneur:
> 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
J'espère que cela aide aussi les autres.
Selon le guide de démarrage de Docker, «votre image intégrée» se trouve «dans le registre d'images Docker local de votre ordinateur».
C'est encore étrange pour moi, car maintenant cela mène à la question. Où se trouve le registre d'images Docker local de ma machine?
Néanmoins, je pense vraiment que cette information mérite d'être partagée comme réponse.
Si quelqu'un en a besoin à des fins de script, voici une solution en ligne.
Dans le shell POSIX, avec PCRE activé grep
, essayez:
DOCKER_ROOT_DIR="$(docker info 2>&1 | grep -oP '(?<=^Docker Root Dir: ).*')"
Dans PowerShell:
$DOCKER_ROOT_DIR="$(docker info 2>&1 | foreach {if($_ -match "Docker Root Dir"){$_.TrimStart("Docker Root Dir: ")}})"
Remarque, sous Windows 10 (à partir de 10.0.18999.1
), dans les configurations par défaut, il renvoie:
C:\ProgramData\Docker
en mode "Conteneurs Windows"/var/lib/docker
, en mode "Conteneurs Linux"DOCKER_ROOT_DIR="$(sudo docker info 2>&1 | grep -oP '(?<=Data loop file: ).*')"
, mais à la fin c'est un fichier, pas un répertoire
sudo ls "$(docker info 2>&1 | grep -oP '(?<=^Docker Root Dir: ).*')"
listez le contenu de ce répertoire.