Docker dice "nessuno spazio lasciato sul dispositivo" ma il sistema ha molto spazio?


19

Sto cercando di eseguire un'immagine docker che funziona su altri sistemi (e puoi anche estrarla da dockerhub, se lo desideri: è dougbtv/asterisk) tuttavia, sulla mia workstation generale, si lamenta dello spazio libero quando (sembra) è untarring le immagini della finestra mobile.

Provo ad eseguirlo, e quando lo faccio ricevo un errore indicando che è fuori spazio. Ecco un esempio di me che provo a eseguirlo e si lamenta dello spazio ..

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

Certo, controllo quanto spazio è disponibile e attraverso google trovo che a volte questo accade perché sei fuori dagli inode. Quindi do un'occhiata a entrambi e vedo che ci sono anche molti inode.

[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

E così puoi vedere un po 'quello che sta succedendo qui è il mio /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

E ho anche chiesto a qualcuno con una domanda di scambio stack simile chiesto i risultati del lvscomando, che mostra:

[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         

È un sistema 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

Driver di archiviazione:

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

Versione Docker:

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

Per questo articolo consigliato ho provato a cambiare la finestra mobile in/etc/sysconfig/docker

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

E riavviato la finestra mobile, inutilmente. L'ho cambiato di nuovo in solo --selinux-enabled(nota: ho selinux disabilitato)

Inoltre ho notato che l'articolo menzionato guardando il file di dati di riserva, che assomiglia a:

[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

È un problema che il file sparse sia più grande della dimensione del disco?

Il mio lsblkaspetto è:

[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   

Quale driver di archiviazione stai usando? sudo docker info|grep Driver:
mattdm,

Bella domanda @mattdm, è devicemappercon driver di esecuzione native-0.2. Ho aggiornato la mia domanda con quelle informazioni e la versione docker.
dougBTV,

puoi allegare l'output di lsblk? Questo post sul blog può essere d'aiuto, anche se è un po 'obsoleto.
mattdm,

Sono andato e l'ho aggiornato e ho seguito il post del blog per verificare un paio di cose, che ho anche notato, apprezzare il puntatore lì @mattdm
dougBTV

Docker sta estraendo un file tar da / var / lib / docker / tmp / 70 .... in una directory in / var / lib / docker / devicemapper / .... Il fatto che ci sia la sottostringa 'devicemapper' in quel percorso mi fa pensare che la finestra mobile sta mappando un dispositivo di archiviazione a blocchi in un dispositivo a blocchi specifico della finestra mobile per l'uso. Questo probabilmente significa che se esegui lsblk / df e amici prima o dopo il comando docker, perderai il dispositivo mappato (la docker ripulisce dopo se stessa?). Probabilmente ctrl-z il processo di disaggregazione dopo che gli errori iniziano a scoppiare e iniziano a frugare con gli strumenti df / dm. Puoi farlo?
Lmwangi,

Risposte:


11

Se si utilizza qualsiasi sistema operativo basato su Red-Hat, è necessario sapere che "Devicemapper" è limitato a 10 GB per immagine e se si sta tentando di eseguire un'immagine fino a 10 GB, è possibile che si verifichi tale errore. Questo potrebbe essere il tuo problema. Prova questo, ha funzionato per me

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

 sudo systemctl stop docker.service

o

sudo service docker stop

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

Esegui questo comando

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

Dove "20G" si riferisce alle nuove dimensioni che si desidera vengano prese da Devicemapper, quindi riavviare la finestra mobile

sudo systemctl start docker.service

o

sudo service docker start

Controlla se è impostato eseguendo

docker info

Spero che funzioni!


Grazie! Ci proverò più tardi. Ho ancora questa macchina in giro, tuttavia, ora è abbastanza obsoleta, quindi potrebbe essere un problema aggiornarmi all'ultima versione di Fedora & Docker.
dougBTV,

Ci ho provato, ma la finestra mobile si è rifiutata di avviarsi in seguito. Penso che "semplicemente non usare redhat" sarebbe una soluzione più semplice :)
samthebest

1
sudo dockerd-current --storage-opt dm.basesize=20G... ovvero docker daemon => dockerd in RedHat.
Mikiemorales,

1
Il comando docker daemon --storage-opt dm.basesize=20Gnon sembra più esistere.
Alex

3

Stai per caso cercando di eseguire un'immagine molto grande? RHEL non ha il supporto nativo di aufs. Quindi usi devicemapper Quando usi devicemapper, hai accesso a 10 GB di default solo per il tuo filesystem container. Controlla questo articolo , potrebbe essere di aiuto.


3
Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il collegamento come riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia.
Anthon,

0

In esecuzione docker system prune funzionato per un po ', quindi ho dovuto continuare ad aumentare la "Dimensione dell'immagine disco" in Preferenze ...> Disco, ma questo mi ha aiutato solo fino a quando non l'ho aumentato di nuovo.

Mi rifiuto di continuare ad aumentare le dimensioni dell'immagine del disco e docker system prunenon rivendico più spazio, ma docker volume prunequesta volta la corsa ha aiutato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.