ปัญหาพื้นที่บน docker devmapper และ CentOS7


103

ฉันกำลังเรียนรู้นักเทียบท่าและฉันใช้ v1.11.0 ฉันกำลังพยายามติดตั้ง hadoop แต่ devmapper บ่นเกี่ยวกับเนื้อที่ว่างบนดิสก์?

devmapper: Thin Pool has 82984 free data blocks which is less than minimum required 163840 free data blocks. Create more free space in thin pool or use dm.min_free_space option to change behavior

ฉันลบภาพทั้งหมดแล้ว แต่ปัญหายังคงมีอยู่:

[root@localhost hadoop_docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
debian              latest              47af6ca8a14a        3 weeks ago         125 MB
[root@localhost hadoop_docker]#

และนี่คือการกำหนดค่าดิสก์ของฉัน:

[root@localhost ~]# lsblk
NAME                       MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                          8:0    0    8G  0 disk
├─sda1                       8:1    0  500M  0 part /boot
└─sda2                       8:2    0  7.5G  0 part
  ├─centos-root            253:0    0  6.7G  0 lvm  /
  └─centos-swap            253:1    0  820M  0 lvm  [SWAP]
sr0                         11:0    1 1024M  0 rom
loop0                        7:0    0  100G  0 loop
└─docker-253:0-844682-pool 253:2    0  100G  0 dm
loop1                        7:1    0    2G  0 loop
└─docker-253:0-844682-pool 253:2    0  100G  0 dm

คำถาม:ฉันจะเพิ่มพื้นที่ว่างในดิสก์ได้อย่างไร?

ขอบคุณ


1
สิ่งนี้เกี่ยวข้องกับ devicemapper ในปัญหาการจัดเก็บที่ไม่สามารถกู้คืนย้อนกลับได้หรือไม่ github.com/docker/docker/issues/3182 "devicemapper ไม่แนะนำให้ใช้ในการผลิต" ควรย้ายออกจากอุปกรณ์ที่ดีกว่าด้วยเหตุผลบางประการ ฉันพบว่ามันง่ายพอที่จะเปลี่ยนไปใช้โปรแกรมควบคุมการจัดเก็บข้อมูลซ้อนทับแน่นอน YMMV แต่หวังว่าจะไม่มากเกินไป 'rm -rf / var / lib / docker' ค่อนข้างเป็นทางเลือกเมื่อเปลี่ยน แต่ใช้งานง่ายและฉันขอแนะนำเป็นอย่างยิ่ง projectatomic.io/blog/2015/06/...
gaoithe

1
FYI คุณสามารถดูการใช้งานดิสก์พูลแบบบางด้วย " sudo lvs" ซึ่งจะช่วยได้เมื่อคุณพยายามหาพื้นที่ว่างในดิสก์ "เท่าใด" ที่คุณต้องการในการล้างข้อมูล (โดยใช้คำตอบที่ระบุ)
Aaron D. Marasco

คำตอบ:


31

คุณสามารถใช้ได้:

docker system prune -a -f --volumes

ที่ไหน:

  • -a == ลบภาพที่ไม่ได้ใช้ทั้งหมด
  • -f == กำลัง
  • - ปริมาณ == ปริมาณพรุน

ดู: https://docs.docker.com/engine/reference/commandline/system_prune/#description

ตามหมายเหตุด้านข้างฉันมีปัญหามากมายเมื่อฉันใช้ไดรเวอร์ devicemapper กับสภาพแวดล้อมของฉัน ฉันเคยทำความสะอาดตามที่ได้กล่าวไปแล้ว แต่ยังมีปัญหาอื่น ๆ เกี่ยวกับอุปกรณ์อื่น ๆ ฉันขอแนะนำให้ย้ายไปที่ overlay2 มันแก้ไขเกือบทุกอย่างสมบูรณ์


1
เราเรียกใช้คำสั่งในคำตอบของ @ Cokoda-Raka เป็นประจำ แต่ oe โฮสต์ Docker หนึ่งตัวคำสั่งนี้จำเป็นเมื่อ overraly2 ใช้พื้นที่ดิสก์จำนวนมากเกินกว่าที่ควรจะมี ฉันคิดว่าฉันจะเพิ่มคำสั่งนี้ในงานล้างข้อมูลอัตโนมัติของเราด้วย
StockB

1
สิ่งนี้ช่วยใน RHEL 7 กับ Docker 1.13.1 หลังจากทำงานdocker container prune, docker image prune, docker volume pruneเรายังคงมีข้อผิดพลาด devmapper / บางสระว่ายน้ำ คำสั่งดังกล่าวใช้งานได้ล้างพื้นที่ที่จำเป็นและไม่จำเป็นต้องรีสตาร์ท daemon
Johnathan Elmore

167

เพียงแค่เรียกใช้ทั้งสามนี้ ไม่จำเป็นต้องถอดคอนเทนเนอร์ RUNNING

  1. ล้างข้อมูลออกจากกระบวนการ:

    docker rm $(docker ps -q -f status=exited)
    
  2. การล้างข้อมูลที่ห้อยลงมา:

    docker volume rm $(docker volume ls -qf dangling=true)
    
  3. ล้างข้อมูลห้อยภาพ:

    docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
    

4
ฉันเรียนรู้จากที่นี่: stackoverflow.com/questions/32723111/…
Cokorda Raka

19
เวอร์ชัน 1.13 ขณะนี้อนุญาตให้เรียกใช้docker system prune docs.docker.com/engine/reference/commandline/system_prune
Vivek Kodira

2
นี่น่าจะเป็นคำตอบที่ได้รับการยอมรับ คำตอบอื่น ๆ สามารถฆ่าตู้คอนเทนเนอร์ได้มากกว่าที่คุณต้องการฆ่า
DigitalFiz

2
คำสั่งนี้มีประโยชน์มากในการทำความสะอาดดิสก์ของเครื่อง แต่ไม่ได้แก้ไขปัญหาเกี่ยวกับอุปกรณ์และพื้นที่ว่าง
Paulo Oliveira

5
ฉันยังไม่เข้าใจว่าข้อความแสดงข้อผิดพลาดนี้หมายถึง "อะไร" ดังนั้นแม้ว่าคำสั่งเหล่านั้นจะใช้ได้ผล แต่ฉันก็ไม่เข้าใจว่าทำไม "สระบาง" คืออะไร? และการออกจากกระบวนการต้องทำอย่างไรกับ "การพ้นบล็อกข้อมูล"?
yiati
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.