รูปภาพ Docker เก็บอยู่ที่ไหนในเครื่องโฮสต์


874

ฉันจัดการเพื่อค้นหาคอนเทนเนอร์ภายใต้ไดเรกทอรี/var/lib/docker/containersแต่ฉันไม่พบภาพ

ไดเร็กทอรีและไฟล์/var/lib/dockerคืออะไร


2
ดีที่สุดที่จะระบุเฉพาะของระบบปฏิบัติการในชื่อคำถามและ / หรือคำสั่งคำถามในกรณีดังกล่าว มีคำตอบที่ดีสองข้อสำหรับ linux และ macOS (Mac OS X)
Webel IT Australia - upvoter

คำตอบ:


637

เนื้อหาของ/var/lib/dockerไดเรกทอรีแตกต่างกันไปขึ้นอยู่กับคนขับเทียบท่าที่ใช้สำหรับการจัดเก็บ

โดยค่าเริ่มต้นนี้จะเป็นaufsแต่สามารถถอยกลับไปoverlay, overlay2, btrfs, devicemapperหรือzfsขึ้นอยู่กับการสนับสนุนเคอร์เนลของคุณ ในสถานที่ส่วนใหญ่จะเป็นaufsแต่RedHats 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 ข้อมูลเมตา
  • หมายเหตุไฟล์เหล่านี้เป็นไฟล์ "sparse" ที่จัดเตรียมไว้บาง ๆ ดังนั้นจึงไม่ใหญ่เท่าที่ควร

1
ฉันสามารถดูเนื้อหาภายในโดยติดตั้งในบางวิธีได้หรือไม่?
RV

1
หากคุณตั้งค่าไดร์เวอร์หน่วยเก็บข้อมูลหลังจากที่มันทำงานอยู่แล้วและมีคอนเทนเนอร์ที่รันด้วยอิมเมจอยู่มันจะโอนย้ายวันที่ในการรีสตาร์ท daemon ครั้งถัดไปหรือไม่ ถ้าไม่เช่นนั้นจะแก้ไขไดร์เวอร์หน่วยเก็บในกรณีนี้ได้อย่างไร
BTR Naidu


91
ทำสิ่งที่ชอบและอย่า "ตรวจสอบค่าเริ่มต้น" ใช้docker infoและหาสถานที่จริงที่เฉพาะเจาะจงเพื่อตั้งค่าของคุณ
Bruno Bronosky

5
ดูเหมือนว่าจะมีการเปลี่ยนแปลง ฉันใช้Docker for Macมี 2 ภาพที่ 1.5 GB แต่ละคนและมีไดเรกทอรีไม่มี/var/lib docker
miguelmorin

298

เมื่อใช้ Docker สำหรับ Mac แอปพลิเคชันปรากฏว่ามีการจัดเก็บคอนเทนเนอร์ภายใน VM ซึ่งอยู่ที่

~/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

ที่มีดิสก์ Docker และรูปภาพและคอนเทนเนอร์ทั้งหมดที่อยู่ภายใน


7
นี่เป็นตำแหน่งสำหรับทุกรูปภาพ (เช่นubuntu, nginx) หรือเป็นตำแหน่งสำหรับคอนเทนเนอร์ทั้งหมดหรือไม่ คำถามเดิมขอภาพไม่ภาชนะ ...
งุดชิงพงษ์ -Asuka Kenji-

2
หากคุณทราบว่า Docker ยังคงทำงานใน VM เส้นทางของระบบจะสัมพันธ์กับ VM ไม่ใช่จากระบบ Mac Osx ลองใช้คำสั่งนี้: docker run --rm -it -v /: / vm-root อัลไพน์: edge ls -l / vm-root nad หลังจากนี้: docker run --rm -it -v /: / vm-root alpine: edge ls -l / vm-root / var / lib / docker คุณพร้อมที่จะแสดงรายการโฟลเดอร์
docker

3
ดูเหมือนว่าจะมีการเปลี่ยนแปลง ฉันใช้Docker for Macกับสองภาพ 1.5 GB และ~/Library/Containers/Data/com.docker.docker/Dataไม่มีไดเรกทอรีcom.docker.driver.amd64-linuxและไฟล์ขนาดใหญ่เพียงอย่างเดียวที่vms/0/Docker.rawมี 3.6 GB
miguelmorin

1
การใช้ qcow2 หรือ raw นั้นขึ้นอยู่กับว่าคุณอยู่ที่ MacOS High Sierra กับ APFS หรือต่ำกว่า: docs.docker.com/docker-for-mac/faqs/#disk-usage
Peter

1
ตรวจสอบขนาดสำหรับ mac:du -hd1 ~/Library/Containers/com.docker.docker/Data/
Efren

122

นี่เป็นวิธีเก่าแก่ของการทำตอนนี้มันเปลี่ยนไป ไม่ต้องสนใจคำตอบนี้ตั้งแต่ปี 2019

ในกรณีพิเศษของ Mac OS X หรือ Windows โดยใช้ boot2docker รูปภาพ Docker ของคุณจะถูกเก็บไว้ใน VirtualBox VM ที่จัดการโดย boot2docker

VM นี้จะถูกเก็บไว้ในตำแหน่งปกติของภาพ VirtualBox:

      OS X: ~/VirtualBox VMs/boot2docker-vm

      ของ windows: %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 .

16
หลังจากการติดตั้ง Docker ใหม่บน Windows 10 ฉันสามารถยืนยันได้ว่าผลลัพธ์ของการคลิกทางลัด Docker Quickstart Terminal เป็นครั้งแรกที่สร้างเครื่องเสมือน (VM) ที่เรียกว่า 'ค่าเริ่มต้น' (หลังจากการเริ่มต้นไม่สำเร็จสองครั้ง) - ทำงานต่อไปเรื่อย ๆ มันได้ผล). VM 'ค่าเริ่มต้น' นี้สามารถอยู่ภายใน Windows ได้ที่: %USERPROFILE%\.docker\machine\machines (โปรดทราบจุดหยุดเต็มรูปแบบในเส้นทาง)
AnotherLongUsername

6
ในรุ่นใหม่boot2dockerคือตอนนี้นักเทียบท่าเครื่อง ดูdocs.docker.com/machine/migrate-to-machine
khylo

3
เป็นไปได้หรือไม่ที่จะเปลี่ยนสถานที่นั้น
dhblah

13
คำตอบนั้นไม่ถูกต้องอีกต่อไปสำหรับ Windows 10 แต่ให้ดูคำตอบที่ใหม่กว่าจาก @tristan ที่อ้างอิงC:\Users\Public\Documents\Hyper-V\Virtual hard disks\MobyLinuxVM.vhdx
aaronsteers

5
% USERPROFILE% \. นักเทียบท่ายังคงถูกต้องสำหรับการตั้งค่า win7
RMorrisey

119

จริงๆแล้วอิมเมจ Docker จะถูกเก็บไว้ในสองไฟล์ดังที่แสดงโดยคำสั่งต่อไปนี้

$ docker info

แฟ้มข้อมูล: /var/lib/docker/devicemapper/devicemapper/data

ไฟล์ข้อมูลเมตา: /var/lib/docker/devicemapper/devicemapper/metadata


3
นี่คือสำหรับตัวแปร RedHat พวกเขาเลือกที่จะไม่ไป AUFS เป็นมันไม่ได้อยู่ในเคอร์เนลฉีด
แมตต์

8
ใช่น่าเสียดายที่ไฟล์ข้อมูล (Meta) สองบรรทัดนี้ไม่ปรากฏในทุกนักเทียบท่า ขึ้นอยู่กับไดรเวอร์ที่ใช้
Orabîg

@DmitryYudin คำตอบ mirosval ของการทำงานสำหรับล่าสุดนักเทียบท่าสำหรับ Mac
Franklin Yu

8
คำตอบที่เหมาะสมไม่ใช่ "นี่คือที่ที่มันอยู่ในเครื่องของฉัน" คำตอบที่เหมาะสมคือ "นี่คือวิธีที่คุณพบบนเครื่องของคุณ" นี่คือคำตอบที่เหมาะสม ฉันเข้าร่วม บริษัท ที่มีวอลุ่ม EBS 11 แบบซึ่งเต็มไปด้วยภาพนักเทียบท่า คำตอบนี้อนุญาตให้ฉันคิดออกซึ่งเป็นปัจจุบัน "รากผบ."
Bruno Bronosky

บน Mac OS X (อย่างน้อยใน Yosemite ซึ่งเป็น EOL wrt Docker) docker infoมีประโยชน์มาก แต่ผลลัพธ์Docker Root Dir: /var/lib/dockerไม่ได้ระบุตำแหน่งที่เก็บภาพ (ดูคำตอบเฉพาะสำหรับ Mac ด้านบน)
Webel IT Australia - upvoter

70

ใน 'Docker for Windows' ที่เพิ่งเปิดตัวซึ่งใช้ Hyper-V ข้อมูลจะอยู่ในฮาร์ดดิสก์เสมือนของ Docker:

C: \ Users \ Public \ Documents \ Hyper-V \ ฮาร์ดดิสก์เสมือน \ MobyLinuxVM.vhdx

คุณยังสามารถเปิด 'Hyper-V Manager' เพื่อเข้าถึง Docker / MobyLinuxVM


13
นักเทียบท่าในการอัปเดตครบรอบ 10 ปีของ Windows จะวางไฟล์ภาพC:\ProgramData\docker\windowsfilterไว้ ข้อมูลเพิ่มเติม: stackoverflow.com/a/39971954/188740
Johnny Oshika

1
'Hyper-V Manager' คือคำตอบ!
Reza

68

ภาพจะถูกเก็บไว้ใน /var/lib/docker/graph/<id>/layerภาพจะถูกเก็บไว้ใน

โปรดทราบว่ารูปภาพต่างจากภาพหลักเท่านั้น ID หลักจะถูกเก็บไว้พร้อมกับข้อมูลเมตาของภาพ/var/lib/docker/graph/<id>/jsonรหัสผู้ปกครองจะถูกเก็บไว้กับเมตาดาต้าของภาพ

เมื่อคุณdocker runมีภาพ AUFS จะ 'รวม' เลเยอร์ทั้งหมดไว้ในระบบไฟล์เดียวที่ใช้งานได้


11
คำตอบนี้ล้าสมัยพวกเขาย้ายสิ่งต่าง ๆ
อากาศ

7
@ อากาศคุณสามารถโพสต์สิ่งที่เคลื่อนไหวไปรอบ ๆ ?
เอลียาห์ลินน์

1
ไม่มีโฟลเดอร์กราฟอีกต่อไป
Paddy

49

บน Ubuntu คุณสามารถ "เล่น" ด้วยภาพที่กำลังรัน

sudo baobab /var/lib/docker

ที่จริงแล้วรูปภาพต่าง ๆ จะถูกเก็บไว้ภายใน /var/lib/docker/aufs/diff

สกรีนช็อตแสดงเครื่องมือวิเคราะห์ดิสก์ baobab ที่ทำงานบน / var / lib / docker


ดีมาก บน Mac DaisyDisk มีลักษณะคล้ายกัน (การแสดงวงล้อ) GrandPerspective ยังมีประโยชน์ (สี่เหลี่ยม)
Webel IT Australia - upvoter

ดูเหมือนว่าเป็นวิธีเดียวที่เชื่อถือได้ในการค้นหา
Alexandr

48

สำหรับคนที่ใช้กล่องเครื่องมือนักเทียบท่า (ที่ใช้เครื่องนักเทียบท่า) คำตอบที่เกี่ยวข้องกับ boot2docker บน Mac OS X นั้นไม่ถูกต้อง VM นักเทียบท่าเครื่องเรียกว่า "default" และมีอยู่ใน/Users/<username>/.docker/machine/machines/default/ไดเรกทอรี


3
ฉันไม่พบคอนเทนเนอร์หรือโฟลเดอร์รูปภาพภายในไดเรกทอรีนั้น
lvarayut

3
ค้นหา disk.vmdk ในไดเรกทอรีนั้น
lukeaus

1
ภาพ $ docker - ให้ผลประมาณ 1 ภาพในขณะที่ disk.vmdk ใน ~ / .docker มีขนาดประมาณ 20 gigs มาทำไม
Grav

เก็บไว้ที่ไหนใน Windows
Shreyas

@Grav: เครื่องเสมือนจัดสรร 20 gigs สำหรับใช้ในอนาคต แต่ใช้ 1 gig สำหรับรูปภาพเท่านั้น
primavera133

22

ในDocker สำหรับ Windows (เนทิฟ Windows) ที่เก็บคอนเทนเนอร์เริ่มต้นอยู่ที่:

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

ฉันรันdocker buildคำสั่ง & ฉันไม่เห็นไฟล์ที่ฉันคิดว่าเป็นไฟล์รูปภาพ ฉันเห็นบางโฟลเดอร์และไฟล์ข้อความบางไฟล์ (เช่น service.txt) ไฟล์ประเภทใดที่docker buildสร้างไฟล์นามสกุลอะไร
user3731622

22

หากคุณใช้ Docker สำหรับ MAC (ไม่ใช่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ฉันพบภาพ แต่นั่นไม่ใช่ตู้คอนเทนเนอร์ ไม่เห็นพวกเขาในไดเรกทอรีข้อมูลนี้จริงๆ ..
rhand

1
แต่ตามที่ระบุไว้ก่อนหน้าคุณที่นี่stackoverflow.com/a/37642236/460885มันอยู่ในภาพนี้ที่ตั้งของตู้คอนเทนเนอร์
2560

7

ตามคำตอบที่นี่หากคุณใช้ Mac จะอยู่ที่

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

2
Docker.qcow2? ฉันคิดว่าจะดึงภาพนักเทียบท่าเฉพาะจากที่ได้อย่างไร
AlxVallejo

7

ขยายคำตอบของ Tristan ใน Windows ด้วย Hyper-V คุณสามารถย้ายภาพด้วยขั้นตอนเหล่านี้จาก matthuisman:

ใน Windows 10

  1. หยุดนักเทียบท่า ฯลฯ
  2. พิมพ์ "Hyper-V Manager" ในกล่องค้นหาแถบงานและเรียกใช้
  3. เลือกพีซีของคุณในบานหน้าต่างด้านซ้าย (เหมืองเรียกว่า DESKTOP-CBP **)
  4. คลิกขวาที่เครื่องเสมือนที่ถูกต้อง (Mine เรียกว่า MobyLinuxVM)
  5. เลือก "ปิด" (หากกำลังทำงาน)
  6. คลิกขวาอีกครั้งแล้วเลือก "ย้าย"
  7. ทำตามคำแนะนำ

2
สิ่งนี้จะย้ายเครื่อง Hyper-V ไม่ใช่ภาพเท่านั้นภาพจะยังคงถูกจัดเก็บไว้ในตำแหน่ง VHD
olive_tree

@olive_tree ฉันพยายามค้นหาภาพที่สร้างโดยdocker buildคำสั่ง ฉันใช้คอมพิวเตอร์ Windows 10 ฉันมองหาฮาร์ดดิสก์ C: \ Users \ Public \ Documents \ Hyper-V \ Virtual แต่สิ่งที่ฉันเห็นก็คือ MobyLinuxVM.vhdx ภาพที่จัดเก็บจริงอยู่ที่ไหน
user3731622

5

หากคุณทราบว่า Docker ยังคงทำงานใน VM เส้นทางของระบบจะสัมพันธ์กับ VM ไม่ใช่จากระบบ Mac Osx ตามที่ระบุว่าทั้งหมดมีอยู่ในไฟล์ VM:

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

ลองเรียกใช้อิมเมจอัลไพน์ด้วยตัวเลือกโวลุ่มนี้และคำสั่ง ls คุณสามารถแสดงรายการโฮสต์ VM:

นักเทียบท่าวิ่ง --rm -it -v /: / vm-root อัลไพน์: edge ls -l / vm-root

หลังจากนี้ให้ลอง:

ทำงานนักเทียบท่า --rm -it -v /: / vm-root อัลไพน์: edge ls -l / vm-root / var / lib / docker

ตอนนี้คุณสามารถแสดงรายการโฟลเดอร์นักเทียบท่าจากโฮสต์ VM


ขอบคุณ! นี่เป็นคำตอบเดียวที่ใช้ได้กับฉันใน Windows 10 ที่มี Hyper-v ฉันสามารถล้างไฟล์ที่เสียหายภายใต้โฟลเดอร์เข้าใจยาก / var / lib / docker / overlay2
Ali Cheaito


4

ฉันสามารถตอบคำถามนี้สำหรับผู้ใช้ Ubuntu เท่านั้น:

ไดเรกทอรีรากของนักเทียบท่าสามารถพบได้เมื่อคุณเรียกใช้คำสั่ง docker info

ไดเรกทอรีของนักเทียบท่าจะได้รับในบรรทัดนี้: " Docker Root Dir: /var/lib/docker"

เกี่ยวกับอิมเมจของ Docker รูปภาพเหล่านั้นจะถูกเก็บไว้ในไดเรกทอรี Docker: /var/lib/docker/aufs/diff/

โปรดจำไว้ว่าสิ่งเหล่านี้ไม่เหมือนกันในทุกรุ่นของนักเทียบท่า ขณะนี้ฉันใช้ 1.12.3


4

ใช้docker infoคำสั่งเพื่อแสดงข้อมูลทั่วทั้งระบบและตำแหน่งอาจแตกต่างกันไป

ข้อมูลเพิ่มเติมสามารถแสดงได้เช่นชื่อพูลไฟล์ข้อมูลไฟล์ข้อมูลเมตาพื้นที่ข้อมูลที่ใช้พื้นที่ข้อมูลทั้งหมดพื้นที่ข้อมูลเมตาที่ใช้และพื้นที่ข้อมูลเมตาทั้งหมดขึ้นอยู่กับไดรเวอร์อุปกรณ์จัดเก็บที่ใช้งาน

ไฟล์ข้อมูลเป็นที่จัดเก็บภาพและไฟล์ข้อมูลเมตาเป็นที่จัดเก็บข้อมูลเมตาที่เกี่ยวข้องกับภาพเหล่านั้น เมื่อรันเป็นครั้งแรกที่ Docker จัดสรรพื้นที่ข้อมูลจำนวนหนึ่งและพื้นที่ข้อมูลเมตาจากพื้นที่ว่างบนไดรฟ์ที่/var/lib/dockerติดตั้ง

นี่คือตัวอย่างบน Ubuntu (ตรวจสอบ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
...

และนี่คือตัวอย่างของ Travis CI (ดูDocker Root Dir ):

$ 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"]]


3

ตรวจสอบโฟลเดอร์นักเทียบท่าใน /var/lib

ภาพจะถูกเก็บไว้ที่ตำแหน่งด้านล่าง:

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

4
มีเพียงโฟลเดอร์
toto

/var/lib/docker/image/overlay2/ฉันคิดว่าคุณหมายถึงการเพียง: นอกจากนี้โปรดทราบว่านี่เป็นกรณีที่เกิดจากเครื่องยนต์ Docker ของคุณใช้overlay2เป็นไดรเวอร์การจัดเก็บ
Guy Avraham

3

ใช้docker inspect container_id
โฟลเดอร์ค้นหาภายใต้ MergedDir

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

3

สำหรับ "นักเทียบท่าเดสก์ท็อป" คลิกที่ไอคอนถาดระบบนักเทียบท่าแล้วคลิก "การตั้งค่า" ป้อนคำอธิบายรูปภาพที่นี่

บนแท็บขั้นสูงคุณสามารถดูตำแหน่งอิมเมจของดิสก์

ป้อนคำอธิบายรูปภาพที่นี่


2

สภาพแวดล้อม: Windows 10 Pro, edge docker desktop 2.0.3.0

คลิกขวาที่ไอคอนนักเทียบท่าในถาดระบบเลือกการตั้งค่า - ขั้นสูง:

ตำแหน่งอิมเมจของดิสก์ (แก้ไขได้ผ่านเบราว์เซอร์):

C: \ Users \ Public \ Documents \ Hyper-V \ ฮาร์ดดิสก์เสมือน \ DockerDesktop.vhdx

(อยู่ที่นั่น - ไดเรกทอรีเอกสารถูกซ่อนอยู่)


ฮาร์ดดิสก์ C: \ Users \ Public \ Documents \ Hyper-V \ Virtual \ DockerDesktop.vhdx สร้างอิมเมจโดยdocker buildคำสั่งหรือไม่
3731622


1

บน Fedora Docker ใช้LVMสำหรับการจัดเก็บถ้ามี ในระบบของฉัน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 เครื่องมือบรรทัดคำสั่งหรือผู้จัดการพาร์ทิชันที่รองรับเช่นblivet


1

ใน Windows 2016 นักเทียบท่า (DockerMsftProvider) ใช้โฟลเดอร์ "windowsfilter" ใต้รากนักเทียบท่า

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

จะใช้โฟลเดอร์ "tmp" ภายใต้ root docker เพื่อดาวน์โหลดไฟล์และจะลบไฟล์หลังจากแตกไฟล์ที่ดาวน์โหลดไปยังโฟลเดอร์ "windowsfilter"


0

บน Debian Unstable / Sid,

docker info เพื่อค้นหาข้อมูลทั้งระบบ

ภาพจะถูกเก็บไว้ที่/var/lib/docker/image/overlay2/imagedb/contentและ

ภาชนะจะถูกเก็บไว้ที่ /var/lib/docker/containers

รุ่นนักเทียบท่ารุ่น18.06.0-ceAPI1.38


0

ฉันไม่สามารถแก้ไขคำถามด้วย Docker เวอร์ชัน 18.09 บน macos โดยใช้คำตอบข้างต้นแล้วลองอีกครั้ง

ทางออกที่แท้จริงสำหรับฉันเท่านั้นที่ใช้การ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จาก macos ที่แชร์เป็นโวลุ่มที่เขียนได้จากในคอนเทนเนอร์:

> 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

หวังว่านี่จะช่วยผู้อื่นด้วย


0

ภาพจะถูกเก็บไว้ภายใน/var/lib/dockerและภายใต้storage driverไดเรกทอรีที่เกี่ยวข้อง

ไดร์เวอร์หน่วยเก็บข้อมูลที่กำลังถูกใช้สามารถถูกกำหนดโดยการดำเนินการdocker infoคำสั่ง


0

ตามที่คู่มือการเริ่มต้นใช้งาน Docker "รูปภาพที่สร้างขึ้นของคุณ" คือ "ในรีจิสตรีอิมเมจ Docker ในเครื่องของคุณ"

ป้อนคำอธิบายรูปภาพที่นี่

ยังแปลกสำหรับฉันเพราะตอนนี้มันนำไปสู่คำถาม รีจิสตรีอิมเมจ Docker ในเครื่องของฉันอยู่ที่ไหน

อย่างไรก็ตามฉันคิดว่าข้อมูลนี้คุ้มค่าที่จะแบ่งปันเป็นคำตอบ


ฮ่าฮ่า TBH ฉันคิดว่านี่เป็นความคิดเห็นที่มากที่สุด จะเป็นความคิดเห็นที่ดีแม้ว่า!
Mong H. Ng

0

หากใครต้องการมันเพื่อจุดประสงค์ในการเขียนสคริปต์นี่คือโซลูชันบรรทัดเดียว

ใน 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: ")}})"

หมายเหตุเมื่ออยู่ใน Windows 10 (ณ10.0.18999.1) ในการกำหนดค่าเริ่มต้นมันกลับมา:

  • C:\ProgramData\Docker ในโหมด "คอนเทนเนอร์ของ Windows"
  • /var/lib/dockerในโหมด "คอนเทนเนอร์ของ Linux"

CentOS ฉันต้องใช้DOCKER_ROOT_DIR="$(sudo docker info 2>&1 | grep -oP '(?<=Data loop file: ).*')"แต่ในท้ายที่สุดมันเป็นไฟล์ไม่ใช่ไดเรกทอรี
HairOfTheDog

คุณแน่ใจหรือไม่ว่าไม่ใช่ไดเรกทอรี สำหรับฉันsudo ls "$(docker info 2>&1 | grep -oP '(?<=^Docker Root Dir: ).*')"รายการเนื้อหาของไดเรกทอรีนี้
Raven vulcan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.