Docker görüntüleri ana makinede nerede saklanır?


874

Kapsayıcıları dizin altında bulmayı başardım /var/lib/docker/containers, ancak görüntüleri bulamıyorum.

Altındaki dizinler ve dosyalar /var/lib/dockernelerdir?


2
Bu tür durumlarda soru başlığı ve / veya soru bildiriminde işletim sisteminin özelliklerini belirtmek en iyisidir. Linux ve macOS (Mac OS X) için iki iyi cevap verilmiştir.
Webel IT Australia - upvoter

Yanıtlar:


637

Dizinin içeriği, Docker'ın depolama için kullandığı sürücüye/var/lib/docker bağlı olarak değişir .

Varsayılan olarak bu olacak aufsama geri düşebilir overlay, overlay2, btrfs, devicemapperveya zfssizin çekirdek desteğine bağlı olarak. Çoğu yerde bu olacak aufsama RedHats gittidevicemapper .

Depolama sürücüsünü -sveya--storage-driver= seçeneğiyle manuel olarak Docker arka plan programına ayarlayabilirsiniz .

  • /var/lib/docker/{driver-name} görüntülerin içeriği için sürücüye özgü depolamayı içerir.
  • /var/lib/docker/graph/<id>artık yalnızca jsonve layersizedosyalarındaki resim hakkında meta veriler içeriyor .

Aşağıdaki durumlarda aufs:

  • /var/lib/docker/aufs/diff/<id> görüntülerin dosya içeriğine sahiptir.
  • /var/lib/docker/repositories-aufsyerel resim bilgilerini içeren bir JSON dosyasıdır. Bu komutla görüntülenebilir docker images.

Aşağıdaki durumlarda devicemapper:

  • /var/lib/docker/devicemapper/devicemapper/data görüntüleri saklar
  • /var/lib/docker/devicemapper/devicemapper/metadata meta veri
  • Bu dosyaların ince provizyonlu "seyrek" dosyalar olduğunu ve bu nedenle göründükleri kadar büyük olmadıklarını unutmayın.

1
İçeriği bir şekilde monte ederek görebilir miyim?
rv

1
Depolama sürücüsünü zaten çalıştıktan sonra ve görüntülerle çalışan bazı kapsayıcılar varsa ayarlarsanız, arka plan programının bir sonraki yeniden başlatılmasında tarihi geçirir mi? Değilse, bu durumda depolama sürücüsünü nasıl değiştirebilirim?
BTR Naidu


91
Kendinize bir iyilik yapın ve "varsayılanları kontrol etme". Kurulumunuza özgüdocker info gerçek konumu kullanın ve bulun .
Bruno Bronosky

5
Bu değişmiş gibi görünüyor. Docker for MacHer biri 1,5 GB 2 görüntü ile kullanıyorum ve /var/libhiçbir dizini vardır docker.
miguelmorin

298

Mac için Docker uygulaması kullanılırken, kapların şu adreste bulunan VM içinde depolandığı anlaşılmaktadır:

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

GÜNCELLEME ( mmorin izniyle ):

15 Ocak 2019'dan itibaren sadece bu dosya var gibi görünüyor:

~/Library/Containers/com.docker.docker/Data/vms/0/Docker.raw

Docker Diskini ve içindeki tüm görüntüleri ve kapsayıcıları içerir.


7
Bu, tüm resimlerin yeri (mesela ubuntu, nginx) mi yoksa bu tüm kapların yeri mi? Orijinal soru , kap değil, görüntü ister ...
Siu Ching Pong -Asuka Kenji-

2
Docker'ın hala bir VM'de çalıştığını aklınızda tutarsanız, sistem yolları Mac Osx sisteminden değil, VM'ye göredir. Bu komutu deneyin: docker run --rm -it -v /: / vm-root alp: bundan sonra kenar ls -l / vm-root nad: docker run --rm -it -v /: / vm-root alpine: edge ls -l / vm-root / var / lib / docker WM ana bilgisayarından docker klasörünü listeleyebilirsiniz
user1842947

3
Bu değişmiş gibi görünüyor. Docker for MacHer biri 1,5 GB'lık iki görüntü ile kullanıyorum ve ~/Library/Containers/Data/com.docker.docker/Datadizini yok com.docker.driver.amd64-linuxve tek büyük dosya vms/0/Docker.raw3,6 GB ile.
miguelmorin

1
Qcow2'nin veya raw'ın kullanılıp kullanılmayacağı APFS veya daha düşük bir sürümle MacOS High Sierra'da olup olmadığınıza bağlıdır: docs.docker.com/docker-for-mac/faqs/#disk-usage
Peter

1
Mac için boyutu kontrol etdu -hd1 ~/Library/Containers/com.docker.docker/Data/
Efren

122

bu eski yöntemdi, şimdi değişti. 2019 itibariyle bu yanıtı dikkate almayın

Mac OS X veya Windows özel durumunda, boot2docker kullanarak, Docker görüntüleriniz boot2docker tarafından yönetilen bir VirtualBox VM'sinde saklanır.

Bu VM normal VirtualBox görüntülerinin bulunduğu yerde saklanacaktır:

      OS X: ~/VirtualBox VMs/boot2docker-vm

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

Çalıştırarak sıfırlayabilirsiniz (UYARI: Bu, şu ana kadar oluşturup indirdiğiniz tüm resimleri yok edecektir):

boot2docker down
boot2docker destroy
boot2docker init
boot2docker up

Bu, yararlı - rm seçenekleri olmadan bir yapı oluştururken / hata ayıklarken tonlarca ara görüntü sakladıysanız özellikle yararlıdır, burada referans için alıntı yaparım: Kullanım:

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

onun yerine:

docker build -t webapp .

16
Windows 10'da yeni bir Docker yüklemesinin ardından, Docker Hızlı Başlangıç ​​Terminali kısayolunu ilk kez tıklamanın sonucunun 'varsayılan' adlı bir sanal makine (VM) oluşturduğunu doğrulayabilirim (birkaç başarısız başlatmadan sonra - işe yarıyor). Bu 'varsayılan' VM, Windows'ta şu adreste bulunabilir: %USERPROFILE%\.docker\machine\machines (lütfen yoldaki tam durağa dikkat edin)
AnotherLongUsername

6
Daha yeni sürümlerde boot2docker artık docker makinesidir . Bkz docs.docker.com/machine/migrate-to-machine
khylo

3
Bu konumu değiştirmek mümkün mü?
dhblah

13
Yanıt Windows 10 için artık doğru değil. Bunun yerine, @tristan'ın yeni referanslarına bakınC:\Users\Public\Documents\Hyper-V\Virtual hard disks\MobyLinuxVM.vhdx
aaronsteers

5
% USERPROFILE% \. Docker hala win7 kurulumları için doğru.
RMorrisey

119

Aslında Docker görüntüleri aşağıdaki komutla gösterildiği gibi iki dosyada saklanır

$ docker info

Veri dosyası: /var/lib/docker/devicemapper/devicemapper/data

Meta veri dosyası: /var/lib/docker/devicemapper/devicemapper/metadata


3
Bu RedHat varyantları içindir. Onlar bunun ana hat çekirdeğinde olmasın da Aufs gitmezdin .
Matt

8
Evet, ne yazık ki, bu iki satır "(Meta) veri dosyası" her bağlantı istasyonunda görünmüyor. Kullanılan sürücüye bağlıdır
Orabîg

@DmitryYudin mirosval'in yanıtı Mac için en son Docker'da çalışır .
Franklin Yu

8
Doğru bir cevap "Burası benim makinemde olduğu yer" değildir. Doğru bir cevap, "İşte makinenizde nasıl bulduğunuz ." Bu doğru bir cevap. Docker görüntüleri ile dolu 11 farklı EBS ciltli bir şirkete katıldım. Bu cevap şu anki “Kök Dir” in hangisi olduğunu anlamama izin verdi .
Bruno Bronosky

Mac OS X'te (en azından EOL wrt Docker olan Yosemite'de) docker infoçok yararlıdır, ancak çıktıDocker Root Dir: /var/lib/docker görüntü saklama yerini göstermez (bkz. Yukarıdaki Mac'e özel cevap).
Webel IT Australia - upvoter

70

Hyper-V kullanan yeni piyasaya sürülen 'Windows için Docker'da veriler Docker sanal sabit diskinde bulunur:

C: \ Kullanıcılar \ Ortak \ Belgeler \ Hyper-V \ Sanal sabit diskler \ MobyLinuxVM.vhdx

Docker / MobyLinuxVM'ye erişim için 'Hyper-V Yöneticisi'ni de açabilirsiniz.


13
Windows 10 Anniversary Update'teki Docker görüntü dosyalarını C:\ProgramData\docker\windowsfilterbenim için koyuyor . Daha fazla bilgi: stackoverflow.com/a/39971954/188740
Johnny Oshika

1
Cevap 'Hyper-V Manager'!
Reza

68

Görüntüler içinde saklanır /var/lib/docker/graph/<id>/layer.

Görüntülerin yalnızca üst görüntüden farklı olduğunu unutmayın. Üst kimlik, görüntünün meta verileriyle birlikte depolanır /var/lib/docker/graph/<id>/json.

Ne zaman docker runbir görüntü. AUFS, tüm katmanları kullanılabilir bir dosya sisteminde 'birleştirir'.


11
Bu cevap şimdi güncel değil, bazı şeyleri değiştirdiler.
Hava

7
@Air Ne taşındığını gönderebilir misin?
Elijah Lynn

1
Artık grafik klasörü yok
Paddy

49

Ubuntu'da görüntüler çalışırken "oynatabilirsiniz"

sudo baobab /var/lib/docker

Aslında, görüntüler içinde saklanır /var/lib/docker/aufs/diff

/ var / lib / docker üzerinde çalışan disk analiz aracı baobabını gösteren ekran görüntüsü


Gerçekten güzel. Mac'te DaisyDisk benzerdir (tekerlek ekranı), GrandPerspective de yararlıdır (dikdörtgenler).
Webel IT Australia - upvoter

Onu bulmanın tek güvenilir yolu gibi görünüyor.
Alexandr

48

Docker araç kutusunu (docker-machine kullanan) kullanan biri için, Mac OS X'te boot2docker ile ilgili cevaplar geçerli değildir. Liman işçisi makine VM'si "varsayılan" olarak adlandırılır ve /Users/<username>/.docker/machine/machines/default/dizinde bulunur.


3
Bu dizinde herhangi bir kap veya resim klasörü bulamıyorum.
Lvivarayut

3
Bu dizinde
disk.vmdk arayın

1
$ docker görüntüleri -a yaklaşık 1 gig görüntüler verirken ~ / .docker'daki disk.vmdk yaklaşık 20 konserdir. Nasıl olur?
Grav

Windows'da nerede depolanır?
Shreyas

@Grav: Sanal makine gelecekte kullanmak için 20 konser ayırır, ancak görüntüler için yalnızca 1 konser kullanır.
primavera133

22

In Windows için Docker (doğal Windows) Varsayılan kapsayıcı depolama altındadır:

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

docker buildKomutu çalıştırdım ve görüntü dosyası olduğunu düşündüğüm bir dosya göremiyorum. Bazı klasörler ve bazı metin dosyaları görüyorum (örn. Service.txt). Ne tür dosya ve hangi dosya uzantısı ile docker buildoluşturulur?
user3731622

22

MAC için Docker (değil boot2docker) kullanıyorsanız , konum/Users/<</>UserName></>/Library/Containers/com.docker.docker/Data/


Evet, yaptığımda: 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.qcow2Görüntüyü buldum. Ama bu kaplar değil. Onları gerçekten bu veri dizininde görmüyorum ..
rhand

1
Ancak burada daha önce belirtildiği gibi stackoverflow.com/a/37642236/460885 bu görüntünün içinde kapların bulunduğu yer.
rhand

7

Cevap olarak buraya Mac üzerinde iseniz, bu yer alır

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

2
Docker.qcow2? Bundan belirli bir liman işçisi resmini nasıl çekebilirim?
AlxVallejo

7

Tristan'ın cevabını genişleterek, Hyper-V içeren Windows'ta görüntüyü matthuisman'dan şu adımlarla taşıyabilirsiniz:

Windows 10'da,

  1. Bağlantı istasyonunu durdurma vb.
  2. Görev çubuğu arama kutusuna "Hyper-V Manager" yazın ve çalıştırın.
  3. Sol bölmeden PC'nizi seçin (Mine DESKTOP-CBP ** olarak adlandırılır)
  4. Doğru sanal makineye sağ tıklayın (Mine MobyLinuxVM olarak adlandırılır)
  5. "Kapat" ı seçin (çalışıyorsa)
  6. Tekrar sağ tıklayın ve "Taşı" yı seçin
  7. İstemleri izleyin

2
Bu yalnızca görüntüleri değil Hyper-V makinesini hareket ettirir, görüntüler VHD konumunun bulunduğu yerde saklanır.
olive_tree

@olive_tree docker buildKomut tarafından oluşturulan görüntüleri bulmaya çalışıyorum . Windows 10 bilgisayarındayım. C: \ Users \ Public \ Documents \ Hyper-V \ Virtual sabit disklerine bakıyorum, ancak tek gördüğüm MobyLinuxVM.vhdx. Gerçek görüntüler nerede saklanır?
user3731622

5

Docker'ın hala bir VM'de çalıştığını aklınızda tutarsanız, sistem yolları Mac Osx sisteminden değil, VM'ye göredir. Her şeyin bir VM dosyasında bulunduğunu söylediği gibi:

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

Bu birim seçeneği ve VM ana bilgisayarını listeleyebileceğiniz ls komutuyla Alp görüntüsünü çalıştırmayı deneyin:

docker run --rm -it -v /: / vm-root alp: kenar ls -l / vm-root

Bundan sonra sadece deneyin:

docker run --rm -it -v /: / vm-root alp: kenar ls -l / vm-root / var / lib / docker

Artık docker klasörünü VM ana bilgisayarından listeleyebilirsiniz


Teşekkürler! Hyper-v ile Windows 10'da benim için çalışan tek cevap bu. Zor / var / lib / docker / overlay2 klasörü altındaki bozuk dosyaları temizleyebildim.
Ali Cheaito

4

Mac OSX'te Docker için boot2docker'ı kullanıyorum, böylece görüntüler /Users/<USERNAME>/VirtualBox VMs/boot2docker-vm/boot2docker-vm.vmdk.


4

Bu soruya yalnızca Ubuntu kullanıcıları için cevap verebilirim:

Komutu çalıştırdığınızda docker'ın kök dizini bulunabilir docker info

Docker dizini şu satırda verilecek: " Docker Root Dir: /var/lib/docker"

Docker görüntüleri hakkında, docker dizininde saklanırlar: /var/lib/docker/aufs/diff/

Bunların docker'ın tüm sürümlerinde aynı olmadığını unutmayın. Şu anda 1.12.3 kullanıyorum.


4

docker infoSistem genelinde bilgileri görüntülemek için komutu kullanın ; konum değişebilir.

Kullanılan depolama sürücüsüne bağlı olarak havuz adı, veri dosyası, meta veri dosyası, kullanılan veri alanı, toplam veri alanı, kullanılan meta veri alanı ve toplam meta veri alanı gibi ek bilgiler gösterilebilir.

Veri dosyası görüntülerin depolandığı ve meta veri dosyası bu görüntülerle ilgili meta verilerin depolandığı yerdir. İlk kez çalıştırıldığında Docker /var/lib/docker, monte edilen birimde mevcut olan alandan belirli bir miktarda veri alanı ve meta veri alanı ayırır.

İşte Ubuntu'daki örnek ( Root Dir'yi kontrol edin ):

$ 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
...

İşte Travis CI'daki örnek (bakınız Docker Root Dir ):

$ docker info
Server Version: 17.09.0-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
...
Docker Root Dir: /var/lib/docker
...

Bu --formatbilgileri tek bir dosyaya çıkarmak için parametre kullanabilirsiniz , örn.

$ docker info --format '{{.DriverStatus}}'
[[Root Dir /var/snap/docker/common/var-lib-docker/aufs] [Backing Filesystem extfs] [Dirs 265] [Dirperm1 Supported true]]

veya:

$ docker info --format '{{json .DriverStatus}}'
[["Root Dir","/var/snap/docker/common/var-lib-docker/aufs"],["Backing Filesystem","extfs"],["Dirs","265"],["Dirperm1 Supported","true"]]

3

Windows için Docker'da günlükler burada: %USERPROFILE%\AppData\Local\Docker


3

içindeki docker klasörünü kontrol et /var/lib

görüntüler aşağıdaki konumda saklanır:

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

4
Bu sadece sha256 klasör vardır
toto'

Ben sadece gerekiyordu düşünüyorum: /var/lib/docker/image/overlay2/. Ayrıca bunun Docker motorunuzun overlay2Depolama Sürücüsü olarak kullanmasından kaynaklandığını unutmayın .
Guy Avraham

3

kullanmak docker inspect container_id
MergedDir altında bulmak klasörünü

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

3

"Docker Desktop" için, docker sistem tepsisi simgesini tıklayın ve "Ayarlar" ı tıklayın. resim açıklamasını buraya girin

Gelişmiş sekmesinde, disk görüntüsü konumunu görebilirsiniz.

resim açıklamasını buraya girin


2

Ortam: Windows 10 Pro, docker masaüstü 2.0.3.0 kenarı

sistem tepsisindeki docker simgesini sağ tıklayın, ayarları seçin - gelişmiş:

Disk görüntüsü konumu (tarayıcı üzerinden düzenlenebilir):

C: \ Kullanıcılar \ Ortak \ Belgeler \ Hyper-V \ Sanal Sabit Diskler \ DockerDesktop.vhdx

(orada - Belgeler dizini gizli)


C: \ Users \ Public \ Documents \ Hyper-V \ Sanal Sabit Diskler \ DockerDesktop.vhdx docker buildkomut tarafından oluşturulan resim mi?
user3731622


1

Fedora'da Docker, varsa depolama için LVM kullanır . Benim sistemde docker infogösterir:

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
 ...

Bu durumda, depolama alanını artırmak için LVM komut satırı araçlarını veya blivet gibi uyumlu bölüm yöneticilerini kullanmanız gerekir .


1

Windows 2016'da, docker (DockerMsftProvider), docker kökü altında "windowsfilter" klasörünü kullanır

>docker info
...
Storage Driver: windowsfilter
...
Docker Root Dir: C:\ProgramData\docker
...

Dosyaları indirmek için docker kök altındaki "tmp" klasörünü kullanır ve indirilen dosyaları "windowsfilter" klasörüne çıkardıktan sonra dosyaları siler.


0

Debian Kararsız / Sid'de,

docker info sistem çapında bilgi bulmak için.

görüntüler adresinde saklanır /var/lib/docker/image/overlay2/imagedb/contentve

konteynırlar /var/lib/docker/containers

docker sürümü 18.06.0-ce, API sürümü1.38


0

Yukarıdaki cevapları kullanarak macos üzerinde Docker 18.09 sürümü ile soruyu çözemedim ve tekrar denedim.

Benim için tek gerçek çözüm bu docker-compose.ymlyapılandırmayı kullanmaktı :

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

İle başlattıktan sonra docker-compose upnihayet /tmp/host-volumekonteyner içinde yazılabilir hacim olarak paylaşılan macos vardı :

> 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

Umarım bu başkalarına da yardımcı olur.


0

Görüntüler içinde /var/lib/dockerve sonra geçerli storage driverdizinin altında saklanır .

Kullanılan depolama sürücüsü, docker infokomut çalıştırılarak belirlenebilir .


0

Docker Başlangıç ​​kılavuzuna göre , makinenizin yerel Docker görüntü kayıt defterinde "yerleşik görüntünüz" ifadesidir. "

resim açıklamasını buraya girin

Bu hala benim için garip, çünkü şimdi soruya yol açıyor. Makinemin yerel Docker görüntü kayıt defteri nerede?

Yine de, kesinlikle bu bilginin bir cevap olarak paylaşmaya değer olduğunu düşünüyorum.


Haha TBH Bunun en fazla yorum olduğunu düşünüyorum. Harika bir yorum olsa olurdu!
Mong H. Ng

0

Komut dosyası oluşturma amacıyla buna ihtiyaç duyan biri varsa, işte tek satırlık bir çözüm.

PCIX etkinken POSIX kabuğunda grepşunları deneyin:

DOCKER_ROOT_DIR="$(docker info 2>&1 | grep -oP '(?<=^Docker Root Dir: ).*')"

PowerShell'de:

$DOCKER_ROOT_DIR="$(docker info 2>&1 | foreach {if($_ -match "Docker Root Dir"){$_.TrimStart("Docker Root Dir: ")}})"

Windows 10'da (itibariyle 10.0.18999.1), varsayılan yapılandırmalarda şunu döndürür:

  • C:\ProgramData\Docker "Windows kapsayıcılar" modunda
  • /var/lib/docker, "Linux kapsayıcıları" modunda

CentOS üzerinde kullanmak zorundaydım DOCKER_ROOT_DIR="$(sudo docker info 2>&1 | grep -oP '(?<=Data loop file: ).*')", ama sonunda bir dosya değil, bir dizin
HairOfTheDog

Bir dizin olmadığından emin misiniz? Benim sudo ls "$(docker info 2>&1 | grep -oP '(?<=^Docker Root Dir: ).*')"için bu dizinin içeriğini listeleyin.
vulcan raven
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.