मैं निर्देशिका के तहत कंटेनरों को खोजने में कामयाब रहा /var/lib/docker/containers
, लेकिन मैं चित्र नहीं ढूंढ सकता।
निर्देशिका और फ़ाइलों के अंतर्गत क्या हैं /var/lib/docker
?
मैं निर्देशिका के तहत कंटेनरों को खोजने में कामयाब रहा /var/lib/docker/containers
, लेकिन मैं चित्र नहीं ढूंढ सकता।
निर्देशिका और फ़ाइलों के अंतर्गत क्या हैं /var/lib/docker
?
जवाबों:
/var/lib/docker
निर्देशिका की सामग्री ड्राइवर के आधार पर अलग-अलग होती है जो डोकर स्टोरेज के लिए उपयोग कर रहा है ।
डिफ़ॉल्ट रूप से यह हो जाएगा aufs
, लेकिन करने के लिए वापस गिर सकता है overlay
, overlay2
, btrfs
, devicemapper
या zfs
अपने कर्नेल समर्थन पर निर्भर करता है। ज्यादातर जगहों पर यह होगा aufs
लेकिन रेडहेट्स साथ गए थेdevicemapper
।
आप मैन्युअल रूप से भंडारण ड्राइवर को -s
या --storage-driver=
डॉकर डेमॉन के विकल्प के साथ सेट कर सकते हैं ।
/var/lib/docker/{driver-name}
छवियों की सामग्री के लिए ड्राइवर विशिष्ट संग्रहण समाहित करेगा। /var/lib/docker/graph/<id>
अब केवल छवि json
और layersize
फ़ाइलों में मेटाडेटा शामिल है ।के मामले में aufs
:
/var/lib/docker/aufs/diff/<id>
छवियों की फ़ाइल सामग्री है।/var/lib/docker/repositories-aufs
एक JSON फ़ाइल है जिसमें स्थानीय छवि जानकारी है। इसे कमांड के साथ देखा जा सकता है docker images
।के मामले में devicemapper
:
/var/lib/docker/devicemapper/devicemapper/data
छवियों को संग्रहीत करता है/var/lib/docker/devicemapper/devicemapper/metadata
मेटाडेटाdocker info
वास्तविक स्थान का उपयोग करें और खोजें ।
Docker for Mac
1.5 जीबी की 2 छवियों का उपयोग कर रहा हूं और जिनकी /var/lib
कोई निर्देशिका नहीं है docker
।
मैक एप्लिकेशन के लिए डॉकर का उपयोग करते समय, ऐसा प्रतीत होता है कि कंटेनर वीएम में स्थित हैं:
~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
अद्यतन (सौजन्य mmorin के ):
15 जनवरी 2019 तक ऐसा लगता है कि केवल यह फाइल है:
~/Library/Containers/com.docker.docker/Data/vms/0/Docker.raw
जिसमें डॉकर डिस्क और उसके भीतर सभी चित्र और कंटेनर शामिल हैं।
ubuntu
, nginx
), या यह सब कंटेनरों के लिए स्थान है? मूल प्रश्न छवियों के लिए पूछते हैं , कंटेनर नहीं ...
Docker for Mac
1.5 जीबी की दो छवियों के साथ उपयोग कर रहा हूं और ~/Library/Containers/Data/com.docker.docker/Data
कोई निर्देशिका नहीं है com.docker.driver.amd64-linux
और एकमात्र बड़ी फाइल vms/0/Docker.raw
3.6 जीबी के साथ है।
du -hd1 ~/Library/Containers/com.docker.docker/Data/
यह करने का पुराना तरीका था, अब यह बदल गया है। 2019 तक इस उत्तर की उपेक्षा करें
Mac OS X या Windows के विशेष मामले में, boot2docker का उपयोग करते हुए, आपकी Docker छवियां एक virtualBox VM में boot2docker द्वारा प्रबंधित की जाती हैं।
यह VM वर्चुअलबॉक्स छवियों के सामान्य स्थान पर संग्रहीत किया जाएगा:
OS X: ~/VirtualBox VMs/boot2docker-vm
खिड़कियाँ: %USERPROFILE%/VirtualBox VMs/boot2docker-vm
आप इसे चलाकर रीसेट कर सकते हैं (चेतावनी: यह आपके द्वारा अब तक बनाई और डाउनलोड की गई सभी छवियों को नष्ट कर देगा):
boot2docker down
boot2docker destroy
boot2docker init
boot2docker up
यह विशेष रूप से तब उपयोगी होता है जब आप निर्माण के दौरान इंटरमीडिएट छवियों के टन रखते थे / उपयोगी --rm विकल्पों के बिना एक निर्माण को डिबग करते हुए, मैं उन्हें संदर्भ के लिए यहां उद्धृत करता हूं: उपयोग करें:
docker build -t webapp --rm=true --force-rm=true .
के बजाय:
docker build -t webapp .
%USERPROFILE%\.docker\machine\machines
(कृपया रास्ते में पूर्ण विराम पर ध्यान दें)
C:\Users\Public\Documents\Hyper-V\Virtual hard disks\MobyLinuxVM.vhdx
दरअसल, Docker इमेज को दो फाइलों में स्टोर किया जाता है, जैसा कि कमांड को फॉलो करके दिखाया जाता है
$ docker info
डेटा फ़ाइल:
/var/lib/docker/devicemapper/devicemapper/data
मेटाडेटा फ़ाइल:
/var/lib/docker/devicemapper/devicemapper/metadata
docker info
बहुत उपयोगी है, लेकिन आउटपुट Docker Root Dir: /var/lib/docker
इमेज स्टोरेज लोकेशन (ऊपर मैक-विशिष्ट उत्तर देखें) को इंगित नहीं करता है।
हाइपर-वी का उपयोग करने वाले नए जारी किए गए 'डॉकटर फॉर विंडोज' पर, डेटा डॉक वर्चुअल हार्ड डिस्क में स्थित है:
C: \ Users \ Public \ Documents \ Hyper-V \ Virtual हार्ड डिस्क \ MobyLinuxVM.vhdx
आप डॉकर / MobyLinuxVM तक पहुंच के लिए 'हाइपर-वी मैनेजर' भी खोल सकते हैं।
C:\ProgramData\docker\windowsfilter
मेरे लिए छवि फ़ाइलों को रखता है। अधिक जानकारी: stackoverflow.com/a/39971954/188740
छवियों में संग्रहीत हैं /var/lib/docker/graph/<id>/layer
।
ध्यान दें कि चित्र केवल मूल छवि से भिन्न हैं। मूल आईडी छवि के मेटाडेटा के साथ संग्रहीत है /var/lib/docker/graph/<id>/json
।
जब आप docker run
एक छवि AUFS एक प्रयोग करने योग्य फ़ाइल सिस्टम में सभी परतों को 'मर्ज' करेगा।
उबंटू पर आप चल रहे चित्रों के साथ "खेल" सकते हैं
sudo baobab /var/lib/docker
वास्तव में, छवियों के भीतर संग्रहीत हैं /var/lib/docker/aufs/diff
कोई व्यक्ति जो डॉकर टूलबॉक्स का उपयोग कर रहा है (जो डॉकटर-मशीन का उपयोग करता है), मैक ओएस एक्स पर बूट 2 डॉक के बारे में उत्तर मान्य नहीं हैं। डॉकटर-मशीन वीएम को "डिफ़ॉल्ट" कहा जाता है और यह /Users/<username>/.docker/machine/machines/default/
निर्देशिका में मौजूद है ।
में विंडोज के लिए डोकर (देशी विंडोज़) डिफ़ॉल्ट कंटेनर भंडारण पर है:
> docker info
...
Docker Root Dir: C:\ProgramData\Docker
...
docker build
कमांड चलाई और मुझे एक फ़ाइल दिखाई नहीं दे रही है जो मुझे लगता है कि छवि फ़ाइल है। मुझे कुछ फ़ोल्डर और कुछ पाठ फ़ाइलें (जैसे service.txt) दिखाई देती हैं। किस प्रकार की फ़ाइल और किस फ़ाइल एक्सटेंशन के साथ docker build
निर्माण होता है?
यदि आप मैक (नहीं boot2docker
) के लिए डॉकर का उपयोग कर रहे हैं तो स्थान है/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
मुझे छवि मिली। लेकिन यह कंटेनर नहीं है। इस डेटा निर्देशिका में उन्हें वास्तव में नहीं देखें ..
जैसा कि यहां बताया गया है , यदि आप मैक पर हैं, तो यह स्थित है
/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
विंडोज में हाइपर-वी के साथ ट्रिस्टन के जवाब पर विस्तार करते हुए, आप इन कदमों के साथ छवि को मैथ्यूसमैन से स्थानांतरित कर सकते हैं :
विंडोज 10 में,
- कर्ता आदि को रोकना
- टास्क-बार सर्च बॉक्स में "हाइपर-वी मैनेजर" टाइप करें और इसे चलाएं।
- अपने पीसी को बाएं हाथ के फलक में चुनें (मेरा नाम DESKTOP-CBP ** है)
- सही वर्चुअल मशीन पर राइट क्लिक (मेरा नाम MobyLinuxVM है)
- "बंद करें" चुनें (यदि यह चल रहा है)
- फिर से उस पर राइट क्लिक करें और "मूव" चुनें
- संकेतों का पालन करें
docker build
कमांड द्वारा बनाई गई छवियों को खोजने की कोशिश कर रहा हूं । मैं विंडोज 10 कंप्यूटर पर हूं। मैं C: \ Users \ Public \ Documents \ Hyper-V \ Virtual हार्ड डिस्क में देखता हूं, लेकिन मैं जो कुछ भी देखता हूं वह MobyLinuxVM.vhdx है। वास्तविक चित्र कहाँ संग्रहीत हैं?
यदि आप यह ध्यान रखते हैं कि डॉकटर अभी भी एक वीएम में चल रहा है, तो सिस्टम पथ वीएम के सापेक्ष हैं और मैक ओएससी सिस्टम से नहीं। जैसा कि यह कहता है कि सभी VM फ़ाइल में सम्मिलित है:
/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
इस वॉल्यूम विकल्प और VM कमांड को सूचीबद्ध करने में सक्षम ls कमांड के साथ अल्पाइन छवि को चलाने का प्रयास करें:
docker run --rm -it -v /: / vm-root अल्पाइन: एज ls -l / vm-root
इसके बाद बस कोशिश करें:
docker run --rm -it -v /: / vm-root अल्पाइन: एज ls -l / vm-root / var / lib / docker
अब, आप VM होस्ट से docker फ़ोल्डर को सूचीबद्ध करने में सक्षम हैं
मैं मैक OSX पर Docker के लिए boot2docker का उपयोग करता हूं, इसलिए छवियों को इसमें संग्रहीत किया जाता है /Users/<USERNAME>/VirtualBox VMs/boot2docker-vm/boot2docker-vm.vmdk
।
मैं केवल उबंटू उपयोगकर्ताओं के लिए इस प्रश्न का उत्तर दे सकता हूं:
जब आप कमांड चलाते हैं तो डॉक की रूट डायरेक्टरी पाई जा सकती है docker info
इस पंक्ति में डॉकर निर्देशिका दी जाएगी: " Docker Root Dir: /var/lib/docker
"
Docker की छवियों के बारे में, उन्हें docker निर्देशिका के अंदर संग्रहीत किया जाता है:
/var/lib/docker/aufs/diff/
याद रखें कि ये चीजें सभी संस्करण में समान नहीं हैं। वर्तमान में, मैं 1.12.3 का उपयोग कर रहा हूं।
docker info
सिस्टम-वाइड जानकारी प्रदर्शित करने के लिए कमांड का उपयोग करें और स्थान भिन्न हो सकते हैं।
उपयोग में संग्रहण ड्राइवर के आधार पर, अतिरिक्त जानकारी को दिखाया जा सकता है, जैसे कि पूल नाम, डेटा फ़ाइल, मेटाडेटा फ़ाइल, उपयोग किया गया डेटा स्थान, कुल डेटा स्थान, मेटाडेटा स्थान का उपयोग किया गया, और कुल मेटाडेटा स्थान।
डेटा फ़ाइल वह जगह है जहाँ चित्र संग्रहीत होते हैं और मेटाडेटा फ़ाइल वह होती है जहाँ उन चित्रों के संबंध में मेटा डेटा संग्रहीत होता है। जब पहली बार चलाया जाता है तो डॉकर एक निश्चित मात्रा में डेटा स्पेस और मेटा डेटा स्पेस को उस वॉल्यूम पर उपलब्ध स्थान से आवंटित करता है जहां
/var/lib/docker
माउंट किया जाता है।
यहाँ उबंटू पर उदाहरण दिया गया है ( रूट ड्यूर की जाँच करें ):
$ 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
...
और यहाँ ट्रेविस सीआई ( डॉकेर रूट डार देखें ) पर उदाहरण दिया गया है :
$ docker info
Server Version: 17.09.0-ce
Storage Driver: overlay2
Backing Filesystem: extfs
...
Docker Root Dir: /var/lib/docker
...
आप --format
उस जानकारी को एक फ़ाइल में निकालने के लिए पैरामीटर का उपयोग कर सकते हैं , जैसे
$ docker info --format '{{.DriverStatus}}'
[[Root Dir /var/snap/docker/common/var-lib-docker/aufs] [Backing Filesystem extfs] [Dirs 265] [Dirperm1 Supported true]]
या:
$ docker info --format '{{json .DriverStatus}}'
[["Root Dir","/var/snap/docker/common/var-lib-docker/aufs"],["Backing Filesystem","extfs"],["Dirs","265"],["Dirperm1 Supported","true"]]
में डॉक फ़ोल्डर की जाँच करें /var/lib
छवियों को नीचे स्थान पर संग्रहीत किया जाता है:
/var/lib/docker/image/overlay2/imagedb/content
/var/lib/docker/image/overlay2/
:। यह भी ध्यान रखें कि इस तथ्य यह है कि अपने डोकर इंजन का उपयोग कर रहा है की वजह से मामला है overlay2
संग्रहण ड्राइवर के रूप में।
पर्यावरण: Windows 10 प्रो, डोकर डेस्कटॉप 2.0.3.0 बढ़त
सिस्टम ट्रे में राइट-क्लिक करें आइकन, चुनें सेटिंग्स - उन्नत:
डिस्क छवि स्थान (ब्राउज़र के माध्यम से संपादन योग्य):
C: \ Users \ Public \ Documents \ Hyper-V \ Virtual हार्ड डिस्क \ DockerDesktop.vhdx
(यह वहाँ है - दस्तावेज़ निर्देशिका छिपी हुई है)
docker build
कमांड द्वारा बनाई गई छवि है ?
फेडोरा पर, डोकर का उपयोग करता एलवीएम यदि उपलब्ध हो भंडारण के लिए। मेरे सिस्टम से docker info
पता चलता है:
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
...
उस स्थिति में, भंडारण बढ़ाने के लिए, आपको LVM कमांड लाइन टूल्स या संगत विभाजन प्रबंधकों का उपयोग करना होगा जैसे कि ब्लीवेट ।
Windows 2016 में, docker (DockerMsftProvider) फ़ोल्डर "windowsfilter" का उपयोग डस्ट रूट के तहत करता है
>docker info
...
Storage Driver: windowsfilter
...
Docker Root Dir: C:\ProgramData\docker
...
यह फ़ाइलों को डाउनलोड करने के लिए docker रूट के तहत "tmp" फ़ोल्डर का उपयोग करता है और डाउनलोड की गई फ़ाइलों को "windowsfilter" फ़ोल्डर में निकालने के बाद यह फ़ाइलों को हटा देता है।
मैं ऊपर जवाब और फिर से कोशिश की का उपयोग कर MacOS पर डोकर संस्करण 18.09 के साथ प्रश्न हल नहीं कर सका।
मेरे लिए एकमात्र वास्तविक समाधान इस 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
कंटेनर के भीतर से राइट करने योग्य मात्रा के रूप में साझा किए गए मैको से docker-compose up
आखिरकार लॉन्च करने के बाद /tmp/host-volume
:
> 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
उम्मीद है कि यह दूसरों को भी मदद करता है।
डॉकर गेटिंग स्टार्टेड गाइड के अनुसार "आपकी मशीन की स्थानीय डॉकर छवि रजिस्ट्री में" आपकी निर्मित छवि "है।"
यह मेरे लिए अभी भी अजीब है, क्योंकि अब यह सवाल की ओर जाता है। मेरी मशीन की स्थानीय डॉकर छवि रजिस्ट्री कहां है?
फिर भी, मैं निश्चित रूप से लगता है कि यह जानकारी एक जवाब के रूप साझा करने के लायक है।
अगर किसी को स्क्रिप्टिंग के उद्देश्यों की आवश्यकता है, तो यहां एक-लाइन समाधान है।
POSIX शेल में, PCRE सक्षम के साथ grep
, कोशिश करें:
DOCKER_ROOT_DIR="$(docker info 2>&1 | grep -oP '(?<=^Docker Root Dir: ).*')"
PowerShell में:
$DOCKER_ROOT_DIR="$(docker info 2>&1 | foreach {if($_ -match "Docker Root Dir"){$_.TrimStart("Docker Root Dir: ")}})"
ध्यान दें, जब 10.0.18999.1
डिफ़ॉल्ट कॉन्फ़िगरेशन में विंडोज 10 (के रूप में ) पर, यह वापस आता है:
C:\ProgramData\Docker
"विंडोज कंटेनर" मोड में/var/lib/docker
, "लिनक्स कंटेनर" मोड मेंDOCKER_ROOT_DIR="$(sudo docker info 2>&1 | grep -oP '(?<=Data loop file: ).*')"
, लेकिन अंत में यह एक फाइल है, न कि डायरेक्टरी
sudo ls "$(docker info 2>&1 | grep -oP '(?<=^Docker Root Dir: ).*')"
इस निर्देशिका की सामग्री को सूचीबद्ध करें।