Por que o docker está relatando 100% de uso de disco em uma imagem nova do ubuntu?

15

Não consigo mais usar a janela de encaixe ou executar efetivamente novas imagens - está relatando que tenho 100% de uso do disco. Aqui, você pode ver que estou lançando uma cópia intocada do ubuntu e, no entanto, está me dizendo que não tenho mais espaço em disco:

$ docker run -t -i ubuntu /bin/bash
root@3838b70bd76e:/# df -h 
Filesystem      Size  Used Avail Use% Mounted on
rootfs           19G   18G     0 100% /
none             19G   18G     0 100% /
tmpfs          1005M     0 1005M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/sda1        19G   18G     0 100% /etc/hosts
tmpfs          1005M     0 1005M   0% /proc/kcore

Separadamente, estou tentando iniciar uma instância do mysql e está me enviando mensagens de erro que acredito estarem conectadas ao fato de que não tenho disco disponível. Quando tento executar o orchardup ​​/ mysql, recebo:

ERROR: 1030  Got error 28 from storage engine

O que significa que ficou sem espaço de armazenamento.

Diante disso, como devo interpretar o relatório df -h acima e como posso determinar o que está consumindo 100% do meu disco? Estou executando o docker 1.3, executando o OSX 10.9.4, usando o boot2docker.

Obrigado.


Editar: Como solução alternativa, executeiboot2docker delete e, em seguida boot2docker init, parece que todas as minhas imagens foram destruídas (felizmente, posso reconstruí-las com meus arquivos de encaixe ). Agora, quando inicio uma nova imagem do ubuntu:

root@f53d637e3d33:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs           19G  373M   17G   3% /
none             19G  373M   17G   3% /
tmpfs          1005M     0 1005M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/sda1        19G  373M   17G   3% /etc/hosts
tmpfs          1005M     0 1005M   0% /proc/kcore

Muito melhor. Mas ainda estou confuso, deve haver algum tipo de disco global compartilhado em todas as imagens hospedadas pelo boot2docker que foram preenchidas anteriormente?


Edit 2: Acabei de baixar um monte de imagens e agora é o que vejo quando executo a imagem do ubuntu e verifico o espaço livre em disco:

root@f53d637e3d33:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs           19G  2.7G   15G  16% /
none             19G  2.7G   15G  16% /
tmpfs          1005M     0 1005M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/sda1        19G  2.7G   15G  16% /etc/hosts
tmpfs          1005M     0 1005M   0% /proc/kcore

De 3% a 16% consumidos! Claramente, existe algum tipo de disco compartilhado entre todas as minhas imagens que não estou entendendo ...

Esilverberg
fonte
Como você está usando os contêineres do Docker e como os usuários / grupos são dispersos (mais para os erros do mysql) Além disso, para o docker eles estão compartilhando algo no host ou são puramente independentes?
linuxdev2013

Respostas:

1

Nos hosts do Windows, o boot2docker funciona criando uma máquina virtual usando a caixa virtual. Quando você executa o boot2docker init, ele cria uma máquina virtual e, por padrão, atribui 20G ao disco raiz. esta máquina virtual executa um SO Linux mínimo que, por sua vez, executa o daemon docker real (o daemon docker ainda não é executado nativamente no Windows).

o disco conectado à máquina virtual fornece armazenamento para as imagens da janela de encaixe. para que você possa ver opções adicionais no comando boot2docker init para aumentar o tamanho do disco inicial. isso aumentará o tamanho do disco disponível para uso na máquina virtual, mas como Queasy apontou, você precisará adicionar opções adicionais ao daemon do docker para aumentar o armazenamento disponível para as imagens.

Quando você executa "df -h" no contêiner, o tamanho total do disco relatado é o do espaço em disco alocado para o daemon do docker usando a opção "dm.basesize".

nota: o boot2docker agora está obsoleto em favor do Docker Toolbox. convém atualizar para essa versão; nesse caso, você usaria "docker-machine create" em vez de "boot2docker init". Eu mudei para o docker-toolbox para não poder testar as opções de comando necessárias para o boot2docker init

nagu
fonte
0

Modifique a configuração do docker em / etc / sysconfig / docker-storage e adicione a linha:

DOCKER_STORAGE_OPTIONS= --storage-opt dm.basesize=30G

Lembre-se de fazer backup da janela de encaixe antes de prosseguir com esta tarefa, pois ela removerá os dados assim que inicializados.

Queasy
fonte
--storage-optnão é suportado no OSX
Quanlong 18/11
0

Considere que a unidade pode estar com defeito. Hitachi (Drive Fitness Test), Seagate (Seatools) e Western Digital (Western Digital Data Lifeguard) oferecem software de diagnóstico gratuito para ajudá-lo a determinar isso.

Como um exemplo de como uma unidade defeituosa pode danificar o espaço em disco, fiz backup de unidades de 1 TB que informam ao Windows que elas ainda têm PETABYTES de dados para transferir.

Caso sua unidade esteja funcionando corretamente, use du (Uso do Disco) para ver qual pasta é a maior. du -h /usr/bin, du -h /varou du -h /home/[username]/Downloadspara ajudar a identificá-lo.

Editar: vi que você estava usando o OS X: será necessário usar as ferramentas do disco rígido mencionadas acima como opções inicializáveis ​​ou em algo como o Windows PE gratuito, no qual você pode inicializar e executar essas ferramentas.

Tim G
fonte
0

O devicemapper é o mecanismo de armazenamento padrão do docker. Ele tenta pré-alocar 100 GB por padrão em / var / lib / docker. Porém, nem todo esse espaço é realmente usado, e você pode configurá-lo nas opções. Documentos do Docker

bbaassssiiee
fonte