Uso del disco Docker

Estoy alojando algunos contenedores simples de docker. Me pregunto si el tamaño del contenedor aumenta con el time rápidamente y no sé cómo resolver el problema.

Tamaño reportado por Docker:

me@somewhere:~$ sudo docker ps -s CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE 02b30add1cb3 my-service "npm start" 23 hours ago Up 23 hours 3001/tcp, 0.0.0.0:9017->9017/tcp my-service-frontend 0 B (virtual 776.4 MB) 20a2be4931e7 my-service "phantomjs src/sites/" 23 hours ago Up 23 hours 0.0.0.0:3007->3001/tcp my-service-5 6.144 kB (virtual 776.4 MB) ba340ba08941 my-service "phantomjs src/sites/" 23 hours ago Up 23 hours 0.0.0.0:3006->3001/tcp my-service-4 6.144 kB (virtual 776.4 MB) 7b5411d8a171 my-service "phantomjs src/sites/" 23 hours ago Up 23 hours 0.0.0.0:3003->3001/tcp my-service-1 6.144 kB (virtual 776.4 MB) b583a544b37d my-service "phantomjs src/sites/" 23 hours ago Up 23 hours 0.0.0.0:3001->3001/tcp my-service-0 6.144 kB (virtual 776.4 MB) 91373086e06e foo_bar "/bin/sh -c 'git pull" 47 hours ago Up 47 hours 0.0.0.0:12776->8080/tcp kickass_murdock 11.26 MB (virtual 1.081 GB) 

Tamaño informado por du en el host:

 me@somewhere:~$ sudo du -h -d 1 /var/lib/docker/containers 14G /var/lib/docker/containers/20a2be4931e7a10b2e29260b541e3c4d6581462650e47d59682f84626843752b 1,6G /var/lib/docker/containers/7b5411d8a171a35a3c937d62dbdea141fc0a9f3c4de25a2da3a0b94ea71a8f3d 9,6M /var/lib/docker/containers/02b30add1cb3ba6d5be1c36b2c9dd141d8d70cb88a021d2363af5684ef3c220f 480K /var/lib/docker/containers/91373086e06ea83269465e0b026cfe7ca0158a1315b0df04da9a1d1b4ee52823 13G /var/lib/docker/containers/b583a544b37db6144f17a4819ca2f636126b11d668caab3dcdbf4c3a33dedc65 13G /var/lib/docker/containers/ba340ba08941d47af45230be328ef7289c19b6bb6a0d120cf2098cbdd9983f65 40G /var/lib/docker/containers` 

Tamaño informado por du para un contenedor (salida similar para todos los demás contenedores):

 me@somewhere:~$ sudo docker exec -it my-service-4 du -h -d1 -c / 58M /root 0 /dev 3.0M /etc 706M /usr 1.4M /tmp 14M /var 9.0M /bin 32M /lib 4.0K /home 8.0K /run 4.0K /mnt 4.0K /boot 0 /sys 4.0K /opt 4.0K /srv 4.0K /lib64 3.9M /sbin du: cannot access '/proc/12642/task/12642/fd/3': No such file or directory du: cannot access '/proc/12642/task/12642/fdinfo/3': No such file or directory du: cannot access '/proc/12642/fd/3': No such file or directory du: cannot access '/proc/12642/fdinfo/3': No such file or directory 0 /proc 4.0K /media 825M / 825M total 

Entonces: tanto el contenedor como el docker ps informan que el uso del disco es inferior a 1G, aunque el tamaño real del contenedor es de más de 10 GB (al less para algunos). ¿Puede algún cuerpo ayudarme y decir lo que está sucediendo? Supongo que hay algunos problemas en mi contenedor, aunque no sé dónde mirar en este momento. ¿Alguien sabe lo que tengo que hacer?

Docker pone una capa sobre la otra en su sistema de files de cebolla cuando los cambios se almacenan en una image. Cuando elimine su contenedor docker rmi -f CONTAINERID , debería ver que / var / lib / docker / containers utiliza less espacio.

Los cambios en una image se almacenan cuando la construyes. Si solo usa una image, ejecute un contenedor, los datos cambiados son solo "retener". Entonces debes investigar qué sucede en tu contenedor. Esp. vea lo que su server fantasma produce en el sistema de files. ncdu sería una buena herramienta para eso.

Comience con ncdu y luego almacene los files que se producen en una carpeta adjunta del sistema de files de su server. docker run -it -v FULLPATHATHOST:FULLPATHWITHINCONTAINER CONTAINERID

Prueba

ejecutar un contenedor simple, que contiene nada más que el sistema operativo (en mi caso alpino)

 docker run -it stk/alpine:base sh 

En el host, vaya a /var/lib/docker/aufs/diff/ y liste los directorys que contienen con ncdu. (Por supuesto, puede usar cualquier otro progtwig que desee para determinar los tamaños de los directores)

 ncdu 1.10 ~ Use the arrow keys to navigate, press ? for help --- /var/lib/docker/aufs/diff -------------------------------------------------- /.. 286,4MiB [##########] /39f3e2ea0dfe17366b8cd7b0...bf3681b99a1081e33ad62a509f28 214,3MiB [####### ] /2de39307b9361cae12f0116e...d28056e4699b21b9a4d34f374461 207,7MiB [####### ] /92ec6d044cb3e39ae0050012...78d0591675f2231daafbf0877778 154,0MiB [##### ] /9f3806e6bedc8fb01929131b...e01aa1980aadba914fdd9d2f96ae 149,5MiB [##### ] /5f0ca2331640639507d85b83...693659438367311abb0c792b8a62 136,8MiB [#### ] /902b87aaaec929e805414868...1f529ad7f37ab300d4ef9f3a0dbf 136,2MiB [#### ] /222ba86561913d299deb9e0e...6b5f5ec117b01386a4156d092687 132,6MiB [#### ] /8b3a9a9eeaf8ed59f24f21a2...dfe8d033890a2fa44b445deb2e3c 128,5MiB [#### ] /72b3edf317a8d682466c1500...a5e2cad31c8305ed42c41cd61149 117,0MiB [#### ] /818e3763e72ef82b28b0552e...b9f163dc601d266e94e46fd26bb0 57,4MiB [## ] /eeffdfafed9f60771b5bf87a...e8bbd16b572f77899c8e689d174d 56,1MiB [# ] /6976ce3ed5fab37382d90467...37578332417ffcf35a1d499eba52 51,3MiB [# ] /a5a6e0549d247f1c8b81a350...c5071f46d17afe2f8988817360b3 Total disk usage: 2,7GiB Apparent size: 2,7GiB Items: 168658 

Dentro del contenedor ejecuta algo como

 tr -dc A-Za-z0-9 </dev/urandom | head -c 409600000 > a.txt && ls a.txt -all -h 

que creará un file con datos aleatorios llamado a.txt que el tamaño 409600000 fuera mayor que 286,4Mib, la carpeta más grande en /var/lib/docker/aufs/diff/ – para que ncdu lo muestre en la parte superior

 ncdu 1.10 ~ Use the arrow keys to navigate, press ? for help --- /var/lib/docker/aufs/diff -------------------------------------------------- /.. 390,6MiB [##########] /0720a07653a57d938c861cf3...e61c81c29f12289759f0560aa38f 286,4MiB [####### ] /39f3e2ea0dfe17366b8cd7b0...bf3681b99a1081e33ad62a509f28 214,3MiB [##### ] /2de39307b9361cae12f0116e...d28056e4699b21b9a4d34f374461 207,7MiB [##### ] /92ec6d044cb3e39ae0050012...78d0591675f2231daafbf0877778 154,0MiB [### ] /9f3806e6bedc8fb01929131b...e01aa1980aadba914fdd9d2f96ae 149,5MiB [### ] /5f0ca2331640639507d85b83...693659438367311abb0c792b8a62 136,8MiB [### ] /902b87aaaec929e805414868...1f529ad7f37ab300d4ef9f3a0dbf 136,2MiB [### ] /222ba86561913d299deb9e0e...6b5f5ec117b01386a4156d092687 132,6MiB [### ] /8b3a9a9eeaf8ed59f24f21a2...dfe8d033890a2fa44b445deb2e3c 128,5MiB [### ] /72b3edf317a8d682466c1500...a5e2cad31c8305ed42c41cd61149 117,0MiB [## ] /818e3763e72ef82b28b0552e...b9f163dc601d266e94e46fd26bb0 57,4MiB [# ] /eeffdfafed9f60771b5bf87a...e8bbd16b572f77899c8e689d174d 56,1MiB [# ] /6976ce3ed5fab37382d90467...37578332417ffcf35a1d499eba52 Total disk usage: 3,0GiB Apparent size: 3,0GiB Items: 168678 

Ahora sé que es el directory que comienza con 0720a07653a57d9... es que tengo que searchlo. Vaya a él y enumere el contenido

 root@T520:/var/lib/docker/aufs/diff# cd 0720a07653a57d938c861cf32f4bee87fa4be61c81c29f12289759f0560aa38f root@T520:/var/lib/docker/aufs/diff/0720a07653a57d938c861cf32f4bee87fa4be61c81c29f12289759f0560aa38f# ls -all -h insgesamt 391M drwxr-xr-x 5 root root 4,0K Feb 23 10:55 . drwxr-xr-x 674 root root 80K Feb 23 10:55 .. -rw-r--r-- 1 root root 391M Feb 23 10:57 a.txt drwx------ 2 root root 4,0K Feb 23 10:55 root -r--r--r-- 1 root root 0 Feb 23 10:55 .wh..wh.aufs drwx------ 2 root root 4,0K Feb 23 10:55 .wh..wh.orph drwx------ 2 root root 4,0K Feb 23 10:55 .wh..wh.plnk 

Como puede ver, está el file a.txt list.

Ahora vuelva a ejecutar el procedimiento, creación de file aleatorio y relist ncdu (simplemente pulse r en ncdu).

ncdu debe mostrarle, al igual que debería hacerlo, que el tamaño del directory no cambió. Entonces, los datos dentro de la docker fs se sobrescriben. Si eliges un tamaño pequeño, se hace más pequeño.

Entonces, ¿cómo podría ayudarte esto? Como mostré anteriormente, no hay crecimiento de files para cambiar los datos dentro de los files. Y puede descubrir que el directory witch contiene su sistema de files y ver la estructura de files simple de los files agregados / modificados dentro de su contenedor.

Espero que esto ayude a encontrar los files dentro de tu contenedor.

Si sale de su contenedor y lo reinicia con el mismo command nuevamente, se crea una nueva instancia, con su propia capa fs.

Puede encontrar los identificadores de su uso de contenedores detenidos

 docker ps -a | grep Exited | grep stk/alpine:base | awk '{print $1 }' 

Para ver lo que se encuentra antes de borrar …

 docker ps -a | grep Exited | grep stk/alpine:base 7b7d3f6e857a stk/alpine:base "sh" 22 minutes ago Exited (0) 2 minutes ago gigantic_swartz 2f51ea988a28 stk/alpine:base "sh" 23 minutes ago Exited (0) 22 minutes ago cranky_euler 4bfafbb034fe stk/alpine:base "sh" 34 minutes ago Exited (0) 25 minutes ago sick_williams 80cd5687fcd7 stk/alpine:base "sh" 44 minutes ago Exited (137) 37 minutes ago determined_panini a2179a8dd543 stk/alpine:base "sh" 58 minutes ago Exited (130) 44 minutes ago agitated_shockley 8596cd310292 stk/alpine:base "sh" 3 days ago Exited (137) 3 days ago dreamy_murdock 33db61a7830b stk/alpine:base "sh" 3 days ago Exited (0) 3 days ago desperate_hodgkin 2f96c15dc8a1 stk/alpine:base "sh" 2 weeks ago Exited (0) 2 weeks ago determined_babbage 

Adjuntar | xargs -r docker rm | xargs -r docker rm para eliminarlos

Solución de una línea

 docker ps -a | grep Exited | grep stk/alpine:base | awk '{print $1 }' | xargs -r docker rm 

Docker verificará que las imágenes no sean utilizadas por otras imágenes y se quejará si no se puede eliminar si lo hace docker rmi . Pero en este caso desea que se eliminen los contenedores y no las imágenes. Entonces use rm lugar de rmi (actualicé la respuesta)

Disfrutar