Obtenha o tamanho dos contêineres do docker em execução

Cenário

Em primeiro lugar, você precisa localizar o diretório do docker. No Linux, talvez você possa encontrá-lo em /var/lib/docker.

Agora podemos descobrir o conteúdo dessa mágica, mas nosso objetivo principal agora é o aufsdiretório e exatamente o diffsubdiretório.

Aqui podemos encontrar diffs assim, é um commit ou que você pode enviar. Portanto, se você iniciar um contêiner, ele terá um ID e uma imagem inicial (abaixo diff) e um diffdiretório próprio .

Se você somar esses dois diretórios, obterá o site do seu contêiner (talvez?). Claro que se você tiver commits sobre isso vai ser um pouco complicado, mas na maioria das vezes eu executo uma imagem e quando não preciso deleto. Se eu quiser modificar a imagem, faço uma nova imagem inicial.

Se você tiver volumes, poderá encontrá-los em, /var/lib/docker/volumespor exemplo. Portanto, se você executar um contêiner simples, todos os seus arquivos serão armazenados em seu próprio diff.

Roteiro

DIFFPATH="/var/lib/docker/aufs/diff"; \
(for d in `docker ps -q`; do du -s ${DIFFPATH}/${d}*; done;) | \
sed
-e 's/-init//g' | \
awk
'{ sum[$2] += $1 }; END { for (path in sum) { print sum[path]/1024"M", path } }'

Resultado

Cenário

121.125M /var/lib/docker/aufs/diff/5dd90664d4021be8949fcf0b0ad7770216cf667a8f80b1336f7ae23a11aaaa2d
658.043M /var/lib/docker/aufs/diff/afc7176ce9aea02839b380823d4c7fec7f74569172f113e5ce43c168b026d7ae