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
?
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éesLors 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.
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 .
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
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.
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.
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/
.
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
Si vous utilisez Docker pour MAC (pas boot2docker
), l'emplacement est /Users/<</>UserName></>/Library/Containers/com.docker.docker/Data/
.
Dans Docker pour Windows (Windows natif), le stockage de conteneur par défaut est:
> docker info
...
Docker Root Dir: C:\ProgramData\Docker
...
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
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,
- Arrêtez docker etc
- Tapez "Gestionnaire Hyper-V" 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 **)
- Cliquez avec le bouton droit sur la machine virtuelle appropriée (le mien est Appelé MobyLinuxVM).
- Sélectionnez "Désactiver" (s'il est en cours d'exécution)
- Faites un nouveau clic droit dessus et sélectionnez "Déplacer"
- Suivez les instructions
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 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.
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.
Dans Docker pour Windows, les journaux sont ici: %USERPROFILE%\AppData\Local\Docker
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
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.
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
.
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
Selon le Guide de démarrage de Docker "votre image construite" est "dans le registre d’images Docker local de votre ordinateur".
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.
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.
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".
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"]]
utiliser docker inspect container_id
trouver le dossier sous MergedDir
# example.
"MergedDir": "/var/lib/docker/overlay2/f40cc2ea8912ec3b32deeef5a1542a132f6e918acb/merged
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é)