นักเทียบท่าพูดว่า“ ไม่มีที่ว่างเหลืออยู่ในอุปกรณ์” แต่ระบบมีพื้นที่เหลือเฟือหรือไม่


19

ฉันกำลังพยายามเรียกใช้อิมเมจนักเทียบท่าที่ใช้งานได้กับระบบอื่น ๆ (และคุณสามารถดึงมันออกมาจาก dockerhub ถ้าคุณต้องการ: มันdougbtv/asterisk) อย่างไรก็ตามบนเวิร์คสเตชั่นทั่วไปของฉันมันบ่นเกี่ยวกับพื้นที่ว่างเมื่อมัน (ดูเหมือน) มันไม่ได้แสดงภาพนักเทียบท่า

ฉันพยายามเรียกใช้และเมื่อฉันฉันได้รับข้อผิดพลาดที่ระบุว่าพื้นที่ไม่เพียงพอ นี่คือตัวอย่างของฉันพยายามเรียกใช้และมันบ่นเกี่ยวกับพื้นที่ ..

[root@localhost docker]# docker run -i -t dougbtv/asterisk /bin/bash
Timestamp: 2015-05-13 07:50:58.128736228 -0400 EDT
Code: System error

Message: [/usr/bin/tar -xf /var/lib/docker/tmp/70c178005ccd9cc5373faa8ff0ff9c7c7a4cf0284bd9f65bbbcc2c0d96e8565d410879741/_tmp.tar -C /var/lib/docker/devicemapper/mnt/70c178005ccd9cc5373faa8ff0ff9c7c7a4cf0284bd9f65bbbcc2c0d96e8565d/rootfs/tmp .] failed: /usr/bin/tar: ./asterisk/utils/astdb2sqlite3: Wrote only 512 of 10240 bytes
/usr/bin/tar: ./asterisk/utils/conf2ael.c: Cannot write: No space left on device
/usr/bin/tar: ./asterisk/utils/astcanary: Cannot write: No space left on device
/usr/bin/tar: ./asterisk/utils/.astcanary.o.d: Cannot write: No space left on device
/usr/bin/tar: ./asterisk/utils/check_expr.c: Cannot write: No space left on device
[... another few hundred similar lines]

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

[root@localhost docker]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 3.9G     0  3.9G   0% /dev
tmpfs                    3.9G   20M  3.9G   1% /dev/shm
tmpfs                    3.9G  1.2M  3.9G   1% /run
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/fedora-root   36G  9.4G   25G  28% /
tmpfs                    3.9G  5.2M  3.9G   1% /tmp
/dev/sda3                477M  164M  285M  37% /boot
/dev/mapper/fedora-home   18G  7.7G  8.9G  47% /home
tmpfs                    793M   40K  793M   1% /run/user/1000
/dev/sdb1                489G  225G  265G  46% /mnt/extradoze
[root@localhost docker]# df -i
Filesystem                 Inodes  IUsed     IFree IUse% Mounted on
devtmpfs                  1012063    585   1011478    1% /dev
tmpfs                     1015038     97   1014941    1% /dev/shm
tmpfs                     1015038    771   1014267    1% /run
tmpfs                     1015038     15   1015023    1% /sys/fs/cgroup
/dev/mapper/fedora-root   2392064 165351   2226713    7% /
tmpfs                     1015038    141   1014897    1% /tmp
/dev/sda3                  128016    429    127587    1% /boot
/dev/mapper/fedora-home   1166880 145777   1021103   13% /home
tmpfs                     1015038     39   1014999    1% /run/user/1000
/dev/sdb1               277252836 168000 277084836    1% /mnt/extradoze

และคุณสามารถเห็นสิ่งที่เกิดขึ้นที่นี่เป็นของฉัน /etc/fstab

[root@localhost docker]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Tue Mar 17 20:11:16 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/fedora-root /                       ext4    defaults        1 1
UUID=2e2535da-907a-44ec-93d8-1baa73fb6696 /boot                   ext4    defaults        1 2
/dev/mapper/fedora-home /home                   ext4    defaults        1 2
/dev/mapper/fedora-swap swap                    swap    defaults        0 0

และฉันยังถามคนที่มีคำถามการแลกเปลี่ยนสแต็คที่คล้ายกันเพื่อขอผลลัพธ์ของlvsคำสั่งซึ่งแสดง:

[root@localhost docker]# lvs
  LV   VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home fedora -wi-ao---- 17.79g                                                    
  root fedora -wi-ao---- 36.45g                                                    
  swap fedora -wi-ao----  7.77g         

มันเป็นระบบ Fedora 21:

[root@localhost docker]# cat /etc/redhat-release 
Fedora release 21 (Twenty One)
[root@localhost docker]# uname -a
Linux localhost.localdomain 3.19.5-200.fc21.x86_64 #1 SMP Mon Apr 20 19:51:56 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

ที่เก็บข้อมูลไดรเวอร์:

[doug@localhost cs]$ sudo docker info|grep Driver:
Storage Driver: devicemapper
Execution Driver: native-0.2

รุ่นนักเทียบท่า:

[doug@localhost cs]$ sudo docker -v
Docker version 1.6.0, build 3eac457/1.6.0

ตามบทความที่แนะนำนี้ฉันพยายามเปลี่ยนนักเทียบท่าเป็น/etc/sysconfig/docker

OPTIONS='--selinux-enabled --storage-opt dm.loopdatasize=500GB --storage-opt dm.loopmetadatasize=10GB'

และนักเทียบท่าที่เริ่มต้นใหม่จะไม่มีประโยชน์ ฉันได้เปลี่ยนกลับไปเป็นเพียง--selinux-enabled(หมายเหตุ: ฉันปิดใช้งาน selinux แล้ว)

นอกจากนี้ฉันสังเกตเห็นว่าบทความที่กล่าวถึงการดูไฟล์ข้อมูลสำรองซึ่งดูเหมือนว่า:

[root@localhost doug]# ls -alhs /var/lib/docker/devicemapper/devicemapper
total 3.4G
4.0K drwx------ 2 root root 4.0K Mar 20 13:37 .
4.0K drwx------ 5 root root 4.0K Mar 20 13:39 ..
3.4G -rw------- 1 root root 100G May 13 14:33 data
9.7M -rw------- 1 root root 2.0G May 13 14:33 metadata

เป็นปัญหาที่ไฟล์กระจัดกระจายมีขนาดใหญ่กว่าขนาดของดิสก์หรือไม่?

lsblkหน้าตาของฉัน:

[root@localhost doug]# lsblk
NAME                        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                           8:0    0 111.8G  0 disk 
├─sda1                        8:1    0   100M  0 part 
├─sda2                        8:2    0  49.2G  0 part 
├─sda3                        8:3    0   500M  0 part /boot
├─sda4                        8:4    0     1K  0 part 
└─sda5                        8:5    0    62G  0 part 
  ├─fedora-swap             253:0    0   7.8G  0 lvm  [SWAP]
  ├─fedora-root             253:1    0  36.5G  0 lvm  /
  └─fedora-home             253:2    0  17.8G  0 lvm  /home
sdb                           8:16   0   1.8T  0 disk 
└─sdb1                        8:17   0   489G  0 part /mnt/extradoze
loop0                         7:0    0   100G  0 loop 
└─docker-253:1-1051064-pool 253:3    0   100G  0 dm   
loop1                         7:1    0     2G  0 loop 
└─docker-253:1-1051064-pool 253:3    0   100G  0 dm   

คุณใช้ไดรเวอร์เก็บข้อมูลใด? sudo docker info|grep Driver:
mattdm

@mattdm คำถามที่ดีก็พร้อมคนขับการดำเนินการdevicemapper native-0.2ฉันอัปเดตคำถามของฉันด้วยข้อมูลนั้นและรุ่นของนักเทียบท่า
dougBTV

คุณสามารถแนบเอาท์พุทของlsblk? โพสต์บล็อกนี้อาจช่วยได้แม้ว่าจะล้าสมัยไปเล็กน้อย
mattdm

ฉันไปและอัปเดตมันและเดินผ่านบล็อกโพสต์เพื่อเช็คเอาต์สองสิ่งซึ่งฉันได้กล่าวขอบคุณตัวชี้มี @mattdm
dougBTV

นักเทียบท่ากำลังแยกไฟล์ tar จาก / var / lib / docker / tmp / 70 .... ไปยังไดเรกทอรีภายใต้ / var / lib / docker / devicemapper / .... ความจริงที่ว่ามีสตริงย่อย 'devicemapper' ในเส้นทางนั้น ทำให้ฉันคิดว่านักเทียบท่ากำลังจับคู่อุปกรณ์เก็บข้อมูลบล็อกลงในอุปกรณ์บล็อกเฉพาะของนักเทียบท่าเพื่อใช้งาน นี่อาจหมายความว่าถ้าคุณรัน lsblk / df และเพื่อนก่อนหรือหลังคำสั่ง docker คุณจะพลาดอุปกรณ์ที่แมป (นักเทียบท่าจะล้างข้อมูลหลังจากนั้นหรือไม่?) ฉันอยาก ctrl-z เป็นกระบวนการแยกตัวหลังจากข้อผิดพลาดเริ่ม popping และเริ่ม poking รอบด้วยเครื่องมือ df / dm คุณสามารถทำได้ไหม?
Lmwangi

คำตอบ:


11

หากคุณใช้ระบบปฏิบัติการ Red-Hat ใด ๆ คุณควรรู้ว่า "Devicemapper" จำกัด ไว้ที่ 10 GB ต่อภาพและหากคุณพยายามเรียกใช้ภาพที่มีขนาดไม่เกิน 10GB คุณอาจได้รับข้อผิดพลาดนั้น นั่นอาจเป็นปัญหาของคุณ ลองสิ่งนี้มันใช้งานได้สำหรับฉัน

https://docs.docker.com/engine/reference/commandline/daemon/#storage-driver-options

 sudo systemctl stop docker.service

หรือ

sudo service docker stop

rm -rvf /var/lib/docker (Take back up of any important data; containers and images will be deleted)

เรียกใช้คำสั่งนี้

docker daemon --storage-opt dm.basesize=20G

ที่ "20G" หมายถึงขนาดใหม่ที่คุณต้องการให้ devicemapper ใช้แล้วรีสตาร์ท docker

sudo systemctl start docker.service

หรือ

sudo service docker start

ตรวจสอบว่ามีการตั้งค่าโดยการทำงาน

docker info

หวังว่างานนี้!


ขอขอบคุณ! ฉันจะให้ภาพนี้ในภายหลัง ฉันยังมีเครื่องนี้อยู่ แต่ตอนนี้มันค่อนข้างล้าสมัยดังนั้นมันอาจทำให้ฉันต้องอัพเดทเป็น Fedora & Docker ล่าสุด
dougBTV

ฉันให้ไป แต่นักเทียบท่าปฏิเสธที่จะเริ่มขึ้นในภายหลัง ฉันคิดว่า "เพียงแค่ไม่ใช้ redhat" จะเป็นวิธีที่ง่ายกว่า :)
samthebest

1
sudo dockerd-current --storage-opt dm.basesize=20G... นั่นคือ docker daemon => dockerd ใน RedHat
mikiemorales

1
docker daemon --storage-opt dm.basesize=20Gดูเหมือนว่าคำสั่งจะไม่มีอยู่อีกต่อไป
อเล็กซ์

3

คุณมีโอกาสลองใช้ภาพขนาดใหญ่มากไหม? RHEL ไม่มีการสนับสนุนดั้งเดิม ดังนั้นคุณใช้devicemapper เมื่อคุณใช้devicemapperคุณจะสามารถเข้าถึง 10GB โดยค่าเริ่มต้นสำหรับระบบไฟล์คอนเทนเนอร์ของคุณ ตรวจสอบบทความนี้อาจเป็นประโยชน์


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

0

การdocker system pruneทำงานได้ผลสักพักฉันต้องเพิ่ม "ขนาดภาพดิสก์" ในการตั้งค่า ... > ดิสก์ แต่นั่นช่วยได้จนกว่าฉันจะเพิ่มขึ้นอีกครั้งเท่านั้น

ฉันปฏิเสธที่จะเพิ่มขนาดของดิสก์อิมเมจและdocker system pruneไม่ได้อ้างสิทธิ์ในพื้นที่ว่างเพิ่มเติม แต่การเรียกใช้docker volume pruneช่วยในครั้งนี้

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