2015-01-09 10 views
36

Ho installato finestra mobile e ho usato dispositivo a blocchi completamente diverso per i dati di sistema negozio di finestra mobile è una completamente diversa disco rigido /dev/xvdiPerchè immagine finestra mobile di mangiare il mio spazio su disco che non viene utilizzato da finestra mobile

Filesystem  Size Used Avail Use% Mounted on 
/dev/xvda1  7.8G 5.1G 2.6G 67%/
devtmpfs  1.9G 108K 1.9G 1% /dev 
tmpfs   1.9G  0 1.9G 0% /dev/shm 
/dev/xvdi  20G 5.3G 15G 27% /disk1 
/dev/dm-1  9.8G 1.7G 7.6G 18% /disk1/docker/devicemapper/mnt/bb6c540bae25aaf01aedf56ff61ffed8c6ae41aa9bd06122d440c6053e3486bf 
/dev/dm-2  9.8G 1.7G 7.7G 18% /disk1/docker/devicemapper/mnt/c85f756c59a5e1d260c3cdb473f3f4d9e55ac568967abe190eeaf9c4087afeac 

Il problema è che quando io continuo scaricare le immagini della finestra mobile e corro contenitori docker, che se ems che anche l'altro disco fisso /dev/xvda1 viene utilizzato.

Posso verificare questo problema rimuovendo alcune immagini di finestra mobile. Dopo aver rimosso alcune immagini di finestra mobile, /dev/xvda1 ha ora un po 'di spazio in più.

Mi manca qualcosa?

La mia versione finestra mobile:

[[email protected] /]# docker info 
Containers: 2 
Images: 42 
Storage Driver: devicemapper 
Pool Name: docker-202:1-275421-pool 
Pool Blocksize: 64 Kb 
Data file: /disk1/docker/devicemapper/devicemapper/data 
Metadata file: /disk1/docker/devicemapper/devicemapper/metadata 
Data Space Used: 3054.4 Mb 
Data Space Total: 102400.0 Mb 
Metadata Space Used: 4.7 Mb 
Metadata Space Total: 2048.0 Mb 
Execution Driver: native-0.2 
Kernel Version: 3.14.20-20.44.amzn1.x86_64 
Operating System: Amazon Linux AMI 2014.09 
+0

di poter inviare un 'fdisk -l' – user2915097

risposta

39

E 'un problema del kernel con devicemapper, che colpisce la famiglia RedHat di OS (RedHat, Fedora, CentOS, e Amazon Linux). I contenitori eliminati non liberano spazio su disco mappato. Ciò significa che sui sistemi operativi interessati si esaurirà lentamente lo spazio all'avvio e al riavvio dei contenitori.

Il progetto Docker è a conoscenza di ciò e il kernel è presumibilmente corretto in upstream (https://github.com/docker/docker/issues/3182).

Una sorta di soluzione è fornire a Docker il proprio volume in cui scrivere ("When Docker eats up you disk space"). Questo in realtà non gli impedisce di mangiare spazio, solo dopo aver eliminato altre parti del sistema dopo averlo fatto.

La mia soluzione era quella di disinstallare finestra mobile, quindi eliminare tutti i file, quindi reinstallare:

sudo yum remove docker 
sudo rm -rf /var/lib/docker 
sudo yum install docker 

Questo ha il mio spazio posteriore, ma non è molto diverso da quello appena lanciare un'istanza di sostituzione. Non ho trovato una soluzione migliore.

+14

Ho appena passato attraverso la stessa cosa e non si deve disinstallare finestra mobile. Tutto quello che dovevo fare era fermare la finestra mobile, eliminare la directory, quindi avviare la finestra mobile. – blockcipher

+0

Quale directory?/var/lib/docker? Se lo faccio, perdo la mia immagine. Se provo a salvare l'immagine in un file .tar prima, che non riesce troppo: il montaggio Errore '/ dev/mapper/finestra mobile-202: ... errore di input/output – Toby

+0

@Toby sì '/ var/lib/docker', che cancellerà tutte le immagini e i contenitori. Sei un hard-reset Docker, quindi non aspettarti di essere in grado di salvare tutte le tue cose. –

2

Spostare la directory /var/llib/docker.

Supponendo che la directory/root ha abbastanza spazio, se non, sostituto per quello che fa,

sudo systemctl stop docker 

mv /usr/lib/docker /root 


ln -s /root/docker /var/lib/docker 

systemctl start docker 

In questo modo, non è necessario riconfigurare finestra mobile.

0

Sì, finestra mobile utilizzare la cartella/var/lib/docker per memorizzare i livelli. Esistono modi per recuperare lo spazio e spostare lo spazio di archiviazione in un'altra directory.

È possibile montare uno spazio su disco più grande e spostare il contenuto di/var/lib/finestra mobile nella nuova posizione di montaggio e creare il collegamento simbolico.

C'è una spiegazione dettagliata su come eseguire l'attività sopra.

http://www.scmtechblog.net/2016/06/clean-up-docker-images-from-local-to.html

È possibile rimuovere gli strati intermedi troppo.

https://github.com/vishalvsh1/docker-image-cleanup

12

Eliminare l'intero/var/lib/docker non è corretto per me. Questi sono modi più sicuri:

Soluzione 1:

I seguenti comandi dal problema liberare spazio per me ed è molto più sicuro di eliminazione/var/lib/finestra mobile

Prima:

> docker info 
Metadata file: 
Data Space Used: 53.38 GB 
Data Space Total: 53.39 GB 
Data Space Available: 8.389 MB 
Metadata Space Used: 6.234 MB 
Metadata Space Total: 54.53 MB 
Metadata Space Available: 48.29 MB 

Comandi (eseguito come root Non sudo):

# Delete 'exited' containers 
docker rm -v $(docker ps -a -q -f status=exited) 

# Delete 'dangling' images (If there are no images you will get a docker: "rmi" requires a minimum of 1 argument) 
docker rmi $(docker images -f "dangling=true" -q) 

# Delete 'dangling' volumes (If there are no images you will get a docker: "volume rm" requires a minimum of 1 argument) 
docker volume rm $(docker volume ls -qf dangling=true) 

In più recenti versioni Docker

> docker system prune --force 

Dopo:

> docker info 
Metadata file: 
Data Space Used: 1.43 GB 
Data Space Total: 53.39 GB 
Data Space Available: 51.96 GB 
Metadata Space Used: 577.5 kB 
Metadata Space Total: 54.53 MB 
Metadata Space Available: 53.95 MB 

Soluzione 2:

A a lungo con questo, assicurati che i tuoi programmi all'interno del contenitore mobile non scrivano molti/enormi file sul file system.

controllare lo spazio del processo in esecuzione

docker ps -s #may take minutes to return 

Trova il possibile colpevole che può essere utilizzato giga di spazio

docker exec -it <CONTAINER ID> "/bin/sh" 
du -h 

Nel mio caso il programma stava scrivendo giga di file temporanei.

(Nathaniel Waisbrot menzionato nella risposta accettata questa issue ed ho ottenuto alcune informazioni dalla questione)

2

ho avuto un problema simile e credo che questo accade quando non si ha abbastanza spazio nel disco per tutto il vostro immagini docker. Avevo 6 GB riservati per immagini docker che nel mio caso non erano sufficienti. Ad ogni modo, avevo rimosso ogni immagine e contenitore e il disco sembrava ancora pieno. La maggior parte dello spazio veniva usato da/var/lib/docker/devicemapper e/var/lib/docker/tmp.

Questo comando non ha funzionato per me:

# docker ps -qa | xargs docker inspect --format='{{ .State.Pid }}' | xargs -IZ fstrim /proc/Z/root/ 

In primo luogo, ho smesso di servizio finestra mobile:

sudo service docker stop 

Poi ho cancellato/var/lib/finestra mobile:

poi ho fatto quello che qualcuno ha suggerito qui nel https://github.com/docker/docker/issues/18867#issuecomment-232301073

  • Rimuovere un'istanza esistente di metadati finestra mobile rm-rf/var/lib/finestra mobile

    sudo rm-rf/var/lib/finestra mobile

  • Passo seguenti opzioni di finestra mobile demone: devicemapper -s - storage-opt dm.fs = xfs --storage-opt dm.mountopt = discard

  • Avvia daemon docker.

Per ultimi due passi, corro:

sudo dockerd -s devicemapper --storage-opt dm.fs=xfs --storage-opt dm.mountopt=discard 
Problemi correlati