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/docker
nelerdir?
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/docker
nelerdir?
Yanıtlar:
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 aufs
ama geri düşebilir overlay
, overlay2
, btrfs
, devicemapper
veya zfs
sizin çekirdek desteğine bağlı olarak. Çoğu yerde bu olacak aufs
ama RedHats gittidevicemapper
.
Depolama sürücüsünü -s
veya--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 json
ve layersize
dosyaları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-aufs
yerel 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 veridocker info
gerçek konumu kullanın ve bulun .
Docker for Mac
Her biri 1,5 GB 2 görüntü ile kullanıyorum ve /var/lib
hiçbir dizini vardır docker
.
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.
ubuntu
, nginx
) mi yoksa bu tüm kapların yeri mi? Orijinal soru , kap değil, görüntü ister ...
Docker for Mac
Her biri 1,5 GB'lık iki görüntü ile kullanıyorum ve ~/Library/Containers/Data/com.docker.docker/Data
dizini yok com.docker.driver.amd64-linux
ve tek büyük dosya vms/0/Docker.raw
3,6 GB ile.
du -hd1 ~/Library/Containers/com.docker.docker/Data/
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 .
%USERPROFILE%\.docker\machine\machines
(lütfen yoldaki tam durağa dikkat edin)
C:\Users\Public\Documents\Hyper-V\Virtual hard disks\MobyLinuxVM.vhdx
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
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).
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.
C:\ProgramData\docker\windowsfilter
benim için koyuyor . Daha fazla bilgi: stackoverflow.com/a/39971954/188740
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 run
bir görüntü. AUFS, tüm katmanları kullanılabilir bir dosya sisteminde 'birleştirir'.
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
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.
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 build
Komutu ç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 build
oluşturulur?
MAC için Docker (değil boot2docker
) kullanıyorsanız , konum/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
Görüntüyü buldum. Ama bu kaplar değil. Onları gerçekten bu veri dizininde görmüyorum ..
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
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,
- Bağlantı istasyonunu durdurma vb.
- Görev çubuğu arama kutusuna "Hyper-V Manager" yazın ve çalıştırın.
- Sol bölmeden PC'nizi seçin (Mine DESKTOP-CBP ** olarak adlandırılır)
- Doğru sanal makineye sağ tıklayın (Mine MobyLinuxVM olarak adlandırılır)
- "Kapat" ı seçin (çalışıyorsa)
- Tekrar sağ tıklayın ve "Taşı" yı seçin
- İstemleri izleyin
docker build
Komut 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?
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
Mac OSX'te Docker için boot2docker'ı kullanıyorum, böylece görüntüler /Users/<USERNAME>/VirtualBox VMs/boot2docker-vm/boot2docker-vm.vmdk
.
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.
docker info
Sistem 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 --format
bilgileri 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"]]
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
/var/lib/docker/image/overlay2/
. Ayrıca bunun Docker motorunuzun overlay2
Depolama Sürücüsü olarak kullanmasından kaynaklandığını unutmayın .
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)
docker build
komut tarafından oluşturulan resim mi?
Fedora'da Docker, varsa depolama için LVM kullanır . Benim sistemde docker info
gö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 .
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.
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.yml
yapı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 up
nihayet /tmp/host-volume
konteyner 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.
Docker Başlangıç kılavuzuna göre , makinenizin yerel Docker görüntü kayıt defterinde "yerleşik görüntünüz" ifadesidir. "
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.
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ı" modundaDOCKER_ROOT_DIR="$(sudo docker info 2>&1 | grep -oP '(?<=Data loop file: ).*')"
, ama sonunda bir dosya değil, bir dizin
sudo ls "$(docker info 2>&1 | grep -oP '(?<=^Docker Root Dir: ).*')"
için bu dizinin içeriğini listeleyin.