web-dev-qa-db-fra.com

Où les images Docker sont-elles stockées sur la machine hôte?

J'ai réussi à trouver les conteneurs dans le répertoire /var/lib/docker/containers, mais je ne trouve pas les images.

Quels sont les répertoires et les fichiers sous /var/lib/docker?

640
nemo

Le contenu du répertoire /var/lib/docker varie en fonction du pilote utilisé par Docker pour le stockage

Par défaut, il s'agira de aufs, mais peut revenir à overlay, overlay2, btrfs, devicemapper ou zfs en fonction du support de votre noyau. Dans la plupart des endroits, ce sera aufs mais les RedHats sont allés avec devicemapper .

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} contient le stockage spécifique au pilote pour le contenu des images. 
  • /var/lib/docker/graph/<id> ne contient plus que 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. Ceci peut être visualisé 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ées
  • Notez que ces fichiers sont des fichiers "fragmentés" à allocation dynamique, ils ne sont donc pas aussi volumineux qu’ils en ont l’air.
501
Air

Lors de l'utilisation de l'application Docker pour Mac, il semble que les conteneurs soient stockés dans la VM située à l'adresse:

~/Library/Containers/com.docker.docker/Data/com.docker.driver.AMD64-linux/Docker.qcow2

UPDATE (Gracieuseté de mmorin ):

À compter du 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 disque Docker et toutes les images et tous les conteneurs qu’il contient.

252
mirosval

Dans le cas particulier de Mac OS X ou Windows, à l'aide de boot2docker, vos images Docker sont stockées dans un VirtualBox VM géré par boot2docker.

Ce VM sera stocké à la place normale des images VirtualBox:

OS X: ~/VirtualBox VMs/boot2docker-vm

Windows: %USERPROFILE%/VirtualBox VMs/boot2docker-vm

Vous pouvez le réinitialiser en exécutant (ATTENTION: Ceci 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 gardé des tonnes d’images intermédiaires lors de la construction/débogage d’une construction sans les options utiles --rm, je les cite ici pour référence: Utilisez:

docker build -t webapp --rm=true --force-rm=true .

au lieu de:

docker build -t webapp .
119
Phil L.

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

85
Marc Rechté

Les images sont stockées dans /var/lib/docker/graph/<id>/layer.

Notez que les images ne sont que des différences avec l'image parent. 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 dans un système de fichiers utilisable.

68
creack

Sur le nouveau logiciel «Docker pour Windows», qui utilise Hyper-V, les données se trouvent sur le disque dur virtuel de Docker: 

C:\Utilisateurs\Public\Documents\Hyper-V\Disques durs virtuels\MobyLinuxVM.vhdx

Vous pouvez également ouvrir le «Gestionnaire Hyper-V» pour accéder à Docker/MobyLinuxVM.

58
Tristan

Pour quelqu'un qui utilise la boîte à outils Docker (qui utilise docker-machine), les réponses concernant boot2docker sous Mac OS X ne sont pas valides. Le docker-machine VM est appelé "par défaut" et il existe dans le répertoire /Users/<username>/.docker/machine/machines/default/

45
mbbce

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

screenshot showing disk analyzer tool baobab running on /var/lib/docker

37
test30

Si vous utilisez Docker pour MAC (pas boot2docker), l'emplacement est /Users/<</>UserName></>/Library/Containers/com.docker.docker/Data/.

20
Sunil Fernandes

Dans Docker pour Windows (Windows natif), le stockage de conteneur par défaut est:

   > docker info
   ...
   Docker Root Dir: C:\ProgramData\Docker
   ...
20
Tormod Haugene

Comme répondu ici , si vous êtes sur Mac, il est situé 

/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.AMD64-linux/Docker.qcow2
6
Ricardo Martins

En développant la réponse de Tristan, sous Windows avec Hyper-V, vous pouvez déplacer l'image avec ces steps de matthuisman:

Sous Windows 10,

  1. Arrêtez docker etc
  2. Tapez "Gestionnaire Hyper-V" dans la zone de recherche de la barre des tâches et exécutez-le.
  3. Sélectionnez votre PC dans le volet de gauche (le mien s'appelle DESKTOP-CBP **)
  4. Cliquez avec le bouton droit sur la machine virtuelle appropriée (le mien est Appelé MobyLinuxVM).
  5. Sélectionnez "Désactiver" (s'il est en cours d'exécution)
  6. Faites un nouveau clic droit dessus et sélectionnez "Déplacer"
  7. Suivez les instructions
5
boni

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.

3
Chu-Siang Lai

Je peux répondre à cette question uniquement pour les utilisateurs Ubuntu:

Le répertoire racine de docker peut être trouvé lorsque vous exécutez la commande docker info

Le répertoire Docker sera donné dans cette ligne: "Docker Root Dir: /var/lib/docker"

A propos des images du menu fixe, elles sont stockées dans le répertoire du menu fixe: /var/lib/docker/aufs/diff/

Rappelez-vous que ces choses ne sont pas les mêmes dans toutes les versions de docker. Actuellement, j'utilise 1.12.3.

3
Arif A.

Si vous gardez à l'esprit que Docker est toujours en cours d'exécution sur une machine virtuelle, les chemins d'accès système sont relatifs à la VM 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 permettant de répertorier l’hôte VM: 

exécution du menu fixe --rm -it -v /:/vm-root Alpine: Edge ls -l/vm-root

Après cela, essayez: 

exécution du menu fixe --rm -it -v /:/vm-root Alpine: Edge ls -l /vm-root/var/lib/docker

Maintenant, vous pouvez lister le dossier du menu fixe à partir de l'hôte WM.

3
user1842947

Dans Docker pour Windows, les journaux sont ici: %USERPROFILE%\AppData\Local\Docker

2
omasoud

recherchez le dossier de menu fixe dans /var/lib 

les images sont stockées à l'emplacement ci-dessous:

/var/lib/docker/image/overlay2/imagedb/content
2
Chandra Pal

Sur Fedora, Docker utilise LVM pour le stockage, le cas échéant. Sur mon système, docker info affiche:

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, tels que blivet.

0
eddygeek

Les images sont stockées dans /var/lib/docker, puis dans le répertoire storage driver applicable.

Le pilote de stockage utilisé peut être déterminé en exécutant la commande docker info.

0
anshul

Sur Debian Unstable/Sid,

docker info pour rechercher des informations sur l'ensemble du système.

les images sont stockées à /var/lib/docker/image/overlay2/imagedb/content et

les conteneurs sont stockés à /var/lib/docker/containers

version de docker 18.06.0-ce, version d'API 1.38

0
Dhanuka

Selon le Guide de démarrage de Docker "votre image construite" est "dans le registre d’images Docker local de votre ordinateur".

 enter image description here

Cela m'est toujours étrange, parce que maintenant cela nous amè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 en tant que réponse.

0
user3731622

Je ne pouvais pas résoudre la question avec Docker version 18.09 sur macos en utilisant les réponses ci-dessus et réessayé.

La seule solution pour moi consistait à utiliser cette configuration docker-compose.yml:

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 avoir lancé avec docker-compose up j'ai finalement eu /tmp/Host-volume de macos partagé en tant que volume inscriptible depuis le 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 les autres aussi.

0
axelrose

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 du menu fixe pour télécharger les fichiers et supprime les fichiers après avoir extrait les fichiers téléchargés dans le dossier "windowsfilter".

0
shanmuga raja

Utilisez docker info command pour afficher des informations sur l’ensemble du système et leur 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 total de données, l'espace de métadonnées utilisé et l'espace total de métadonnées.

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 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 le paramètre --format 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"]]
0
kenorb

utiliser docker inspect container_id
trouver le dossier sous MergedDir

# example. 
"MergedDir": "/var/lib/docker/overlay2/f40cc2ea8912ec3b32deeef5a1542a132f6e918acb/merged 
0
madjardi

Environnement: Windows 10 Pro, docker desktop 2.0.3.0 Edge

cliquez avec le bouton droit sur l'icône du menu fixe dans la barre d'état système, sélectionnez Paramètres - Avancé:

Emplacement de l'image disque (éditable via le navigateur):

C:\Utilisateurs\Public\Documents\Hyper-V\Disques durs virtuels\DockerDesktop.vhdx

(c'est là - le répertoire des documents est caché)

0
theRiley