Docker nói rằng không còn chỗ trống trên thiết bị, nhưng, hệ thống có nhiều dung lượng không?


19

Tôi đang cố chạy một hình ảnh docker hoạt động trên các hệ thống khác (và thậm chí bạn có thể kéo nó từ dockerhub, nếu bạn muốn: dougbtv/asterisktuy nhiên, trên máy trạm chung của tôi, nó phàn nàn về không gian trống khi nó (trông giống như) đó là gỡ bỏ các hình ảnh docker.

Tôi cố gắng chạy nó và khi tôi gặp lỗi tôi nói rằng nó hết dung lượng. Đây là một ví dụ về việc tôi cố chạy nó và nó phàn nàn về không gian ..

[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]

Tất nhiên, tôi kiểm tra xem có bao nhiêu dung lượng trống và qua việc tìm hiểu tôi thấy rằng đôi khi điều này xảy ra do bạn hết mực. Vì vậy, tôi nhìn vào cả hai, và tôi có thể thấy rằng cũng có rất nhiều nút.

[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

Và vì vậy bạn có thể thấy một chút những gì đang diễn ra ở đây /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

Và tôi cũng đã hỏi một người có câu hỏi trao đổi ngăn xếp tương tự hỏi về kết quả của lvslệnh, cho thấy:

[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         

Đó là hệ thống 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

Trình điều khiển lưu trữ:

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

Phiên bản Docker:

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

Mỗi bài viết đề nghị này tôi đã cố gắng để thay đổi Docker để/etc/sysconfig/docker

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

Và khởi động lại docker, vô ích. Tôi đã thay đổi nó trở lại chỉ --selinux-enabled(lưu ý: Tôi đã tắt selinux)

Ngoài ra, tôi nhận thấy rằng bài báo đề cập đến việc xem tệp dữ liệu dự phòng, trông giống như:

[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

Có phải vấn đề là tệp thưa thớt lớn hơn kích thước của đĩa không?

Hình của tôi lsblknhư:

[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   

Bạn đang sử dụng trình điều khiển lưu trữ nào? sudo docker info|grep Driver:
mattdm

Câu hỏi hay @mattdm, đó là devicemappervới trình điều khiển thực thi native-0.2. Tôi đã cập nhật câu hỏi của tôi với thông tin đó và phiên bản docker.
dougBTV

bạn có thể đính kèm đầu ra của lsblk? Bài đăng blog này có thể giúp đỡ, mặc dù nó hơi lỗi thời.
mattdm

Tôi đã đi và cập nhật nó và xem qua bài đăng trên blog để kiểm tra một vài điều mà tôi cũng lưu ý, đánh giá cao con trỏ ở đó @mattdm
dougBTV

Docker đang trích xuất một tập tin tar từ / var / lib / docker / tmp / 70 .... vào một thư mục bên dưới / var / lib / docker / devicemapper / .... Thực tế là có chuỗi con 'devicemapper' trong đường dẫn đó làm cho tôi nghĩ rằng docker đang ánh xạ một số thiết bị lưu trữ khối vào một thiết bị khối cụ thể docker để sử dụng. Điều này có thể có nghĩa là nếu bạn chạy lsblk / df và bạn bè trước hoặc sau lệnh docker, bạn sẽ bỏ lỡ thiết bị được ánh xạ (docker có tự dọn sạch không?). Tôi có thể hỗ trợ ctrl-z quá trình giải quyết sau khi các lỗi bắt đầu xuất hiện và bắt đầu chọc ngoáy với các công cụ df / dm. Bạn có thể làm điều đó?
Lmwangi

Câu trả lời:


11

Nếu bạn đang sử dụng bất kỳ hệ điều hành Red-Hat nào, bạn nên biết rằng "Devicemapper" bị giới hạn ở mức 10 GB cho mỗi hình ảnh và nếu bạn đang cố chạy một hình ảnh có dung lượng lên tới 10 GB thì bạn có thể gặp phải lỗi đó. Đó có thể là vấn đề của bạn. Hãy thử nó, nó làm việc cho tôi

https://docs.docker.com/engine/reference/commandline/daemon/#st Storage- ức-options

 sudo systemctl stop docker.service

hoặc là

sudo service docker stop

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

Chạy lệnh này

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

Trong đó "20G" đề cập đến kích thước mới mà bạn muốn devicemapper thực hiện, và sau đó, khởi động lại docker

sudo systemctl start docker.service

hoặc là

sudo service docker start

Kiểm tra nếu nó được thiết lập bằng cách chạy

docker info

Hy vọng điều này làm việc!


Cảm ơn bạn! Tôi sẽ cung cấp cho một shot này sau. Tôi vẫn còn chiếc máy này, tuy nhiên, hiện tại nó đã khá lỗi thời, vì vậy nó có thể khiến tôi phải cập nhật lên Fedora & Docker mới nhất.
dougBTV

Tôi đã cho nó đi, nhưng docker đã từ chối khởi động sau đó. Tôi nghĩ rằng "chỉ không sử dụng redhat" sẽ là một giải pháp đơn giản hơn :)
samthebest

1
sudo dockerd-current --storage-opt dm.basesize=20G... đó là docker daemon => dockerd trong RedHat.
mikiemorales

1
Lệnh docker daemon --storage-opt dm.basesize=20Gdường như không tồn tại nữa.
Alex

3

Bạn có đang cố gắng chạy một hình ảnh rất lớn không? RHEL không có hỗ trợ riêng của aufs. Vì vậy, bạn sử dụng devicemapper Khi bạn sử dụng devicemapper, bạn chỉ có quyền truy cập 10GB theo mặc định cho hệ thống tệp chứa của bạn. Kiểm tra bài viết này , nó có thể giúp đỡ.


3
Mặc dù liên kết này có thể trả lời câu hỏi, tốt hơn là bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở nên không hợp lệ nếu trang được liên kết thay đổi.
Anthon

0

Chạy được docker system prunemột lúc, sau đó tôi phải tiếp tục tăng "Kích thước hình ảnh đĩa" trong Tùy chọn ...> Đĩa, nhưng điều đó chỉ giúp ích cho đến khi tôi tăng lại.

Tôi từ chối tiếp tục tăng kích thước hình ảnh đĩa và docker system prunekhông yêu cầu thêm dung lượng, nhưng việc chạy docker volume pruneđã giúp ích cho lần này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.