Dove sono archiviate le immagini Docker sulla macchina host?

Sono riuscito a trovare i contenitori nella directory /var/lib/docker/containers , ma non riesco a trovare le immagini.

Quali sono le directory e i file in /var/lib/docker ?

Il contenuto della directory /var/lib/docker varia a seconda del driver che Docker sta utilizzando per l’archiviazione .

Di default questo sarà aufs ma può ricadere in overlay , overlay2 , btrfs , devicemapper o zfs seconda del supporto del kernel. Nella maggior parte dei casi questo sarà auf ma i RedHats sono andati con devicemapper .

È ansible impostare manualmente il driver di archiviazione con l’opzione -s o --storage-driver= del daemon Docker .

  • /var/lib/docker/{driver-name} conterrà la memoria specifica del driver per i contenuti delle immagini.
  • /var/lib/docker/graph/ ora contiene solo metadati relativi all’immagine, nei file json e layersize .

Nel caso di aufs :

  • /var/lib/docker/aufs/diff/ ha il contenuto del file delle immagini.
  • /var/lib/docker/repositories-aufs è un file JSON contenente informazioni sull’immagine locale. Questo può essere visualizzato con le docker images del comando docker images .

Nel caso di devicemapper :

  • /var/lib/docker/devicemapper/devicemapper/data memorizza le immagini
  • /var/lib/docker/devicemapper/devicemapper/metadata i metadati
  • Nota che questi file sono file “sparse” con thin provisioning quindi non sono grandi come sembrano.

Quando si utilizza l’applicazione Docker per Mac, sembra che i contenitori siano memorizzati nella VM situata in:

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

Nel caso speciale di Mac OS X o Windows, utilizzando boot2docker, le immagini Docker sono memorizzate all’interno di una VM VirtualBox gestita da boot2docker.

Questa VM verrà memorizzata nella posizione normale delle immagini di VirtualBox:

OS X: ~/VirtualBox VMs/boot2docker-vm

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

Puoi resettarlo eseguendo (ATTENZIONE: questo distruggerà tutte le immagini che hai costruito e scaricato finora):

 boot2docker down boot2docker destroy boot2docker init boot2docker up 

Questo è particolarmente utile se hai tenuto tonnellate di immagini intermedie quando costruisci / esegui il debug di una build senza le utili opzioni –rm, le cito qui per riferimento: Usa:

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

invece di:

 docker build -t webapp . 

Le immagini sono memorizzate in /var/lib/docker/graph//layer .

Si noti che le immagini sono solo differenze rispetto all’immagine principale. L’ID genitore è memorizzato con i metadati dell’immagine /var/lib/docker/graph//json .

Quando la docker run un’immagine. AUFS “unirà” tutti i livelli in un unico file system utilizzabile.

In realtà, le immagini Docker sono memorizzate in due file come mostrato dal seguente comando

 $ docker info 

File di dati: /var/lib/docker/devicemapper/devicemapper/data

File di metadati: /var/lib/docker/devicemapper/devicemapper/metadata

Nel nuovo ‘Docker per Windows’, che utilizza Hyper-V, i dati si trovano nel disco rigido virtuale di Docker:

  C: \ Users \ Public \ Documents \ Hyper-V \ Dischi rigidi virtuali \ MobyLinuxVM.vhdx 

È anche ansible aprire “Gestore Hyper-V” per accedere a Docker / MobyLinuxVM.

Per chi utilizza Docker toolbox (che utilizza la macchina docker), le risposte riguardanti boot2docker su Mac OS X non sono valide. La macchina mobile della finestra mobile è definita “predefinita” ed esiste nella directory /Users//.docker/machine/machines/default/ .

Su Ubuntu puoi “giocare” con le immagini in esecuzione

 sudo baobab /var/lib/docker 

In realtà, le immagini sono memorizzate in /var/lib/docker/aufs/diff

schermata che mostra il baobab dello strumento di analisi del disco in esecuzione su / var / lib / docker

In Docker per Windows ( Windows nativo) la memoria predefinita del contenitore è a:

  > docker info ... Docker Root Dir: C:\ProgramData\Docker ... 

Se si utilizza Docker per MAC (non boot2docker ), la posizione è /Users/< UserName>/Library/Containers/com.docker.docker/Data/

Come risposta qui , se sei su Mac, si trova a

 /Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2 

Espandendo la risposta di Tristan, in Windows con Hyper-V puoi spostare l’immagine con questi passaggi da matthuisman:

In Windows 10,

  1. Arresta la finestra mobile ecc
  2. Digitare “Hyper-V Manager” nella casella di ricerca della barra delle applicazioni ed eseguirlo.
  3. Seleziona il tuo PC nel riquadro a sinistra (Il mio è chiamato DESKTOP-CBP **)
  4. Fare clic con il tasto destro sulla macchina virtuale corretta (il mio è chiamato MobyLinuxVM)
  5. Seleziona “Distriggers” (se è in esecuzione)
  6. Fai clic di nuovo con il tasto destro e seleziona “Sposta”
  7. Segui le istruzioni

Io uso il boot2docker per Docker su Mac OSX, quindi le immagini vengono archiviate in /Users//VirtualBox VMs/boot2docker-vm/boot2docker-vm.vmdk .

In Docker per Windows, i registri sono qui: %USERPROFILE%\AppData\Local\Docker

Posso rispondere a questa domanda solo per gli utenti di Ubuntu:

La directory principale della finestra mobile può essere trovata quando si eseguono le docker info del comando

La directory Docker sarà data in questa riga: ” Docker Root Dir: /var/lib/docker

Informazioni sulle immagini della finestra mobile, sono memorizzate nella directory della finestra mobile: /var/lib/docker/aufs/diff/

Ricorda che queste cose non sono le stesse in tutte le versioni di docker. Attualmente sto usando 1.12.3.

Se tenga presente che Docker è ancora in esecuzione in una VM, i percorsi di sistema sono relativi alla VM e non dal sistema Mac Osx. Come dice tutto è contenuto in un file VM:

/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2

Prova ad eseguire l’immagine alpina con questa opzione volume e il comando ls puoi elencare l’host della macchina virtuale:

finestra mobile run –rm -it -v /: / vm-root alpine: edge ls -l / vm-root

Dopo questo basta provare:

finestra mobile run –rm -it -v /: / vm-root alpine: edge ls -l / vm-root / var / lib / finestra mobile

Ora è ansible elencare la cartella docker dall’host WM

controlla la cartella docker in /var/lib

le immagini sono memorizzate nella posizione sottostante:

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

Su Fedora, Docker utilizza LVM per l’archiviazione, se disponibile. Sul mio sistema le docker info mostrano:

 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 tal caso, per aumentare lo spazio di archiviazione, sarà necessario utilizzare gli strumenti della riga di comando LVM o i gestori di partizioni compatibili come blivet .

E se vuoi vedere quali immagini hai localmente, devi eseguire la finestra mobile in interattivo con il comando bash (penso che sia il comando) per ottenere il normale prompt di Linux $. Quindi eseguire immagini docker. All’interno di mobylinux.vhdx, in / var / lib / docker / è dove è memorizzata la cache locale.