проблема с пространством на docker devmapper и CentOS7


103

Я изучаю докер и использую v1.11.0. Я пытаюсь установить hadoop, но devmapper жалуется на свободное место на диске?

devmapper: Thin Pool has 82984 free data blocks which is less than minimum required 163840 free data blocks. Create more free space in thin pool or use dm.min_free_space option to change behavior

Я удалил все свои изображения, но проблема не устранена:

[root@localhost hadoop_docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
debian              latest              47af6ca8a14a        3 weeks ago         125 MB
[root@localhost hadoop_docker]#

и это моя конфигурация диска:

[root@localhost ~]# lsblk
NAME                       MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                          8:0    0    8G  0 disk
├─sda1                       8:1    0  500M  0 part /boot
└─sda2                       8:2    0  7.5G  0 part
  ├─centos-root            253:0    0  6.7G  0 lvm  /
  └─centos-swap            253:1    0  820M  0 lvm  [SWAP]
sr0                         11:0    1 1024M  0 rom
loop0                        7:0    0  100G  0 loop
└─docker-253:0-844682-pool 253:2    0  100G  0 dm
loop1                        7:1    0    2G  0 loop
└─docker-253:0-844682-pool 253:2    0  100G  0 dm

ВОПРОС: Как освободить место на диске?

Спасибо


1
Связано ли это также с devicemapper в проблемах с неисправимым хранилищем loopback? github.com/docker/docker/issues/3182 «devicemapper не рекомендуется для производственного использования». Лучше отказаться от devicemapper по нескольким причинам. Мне было достаточно легко переключиться на драйвер оверлейного хранилища, YMMV, конечно, но, надеюсь, не слишком много. 'rm -rf / var / lib / docker' не является обязательным при переключении, но прост, и я очень рекомендую его. projectatomic.io/blog/2015/06/...
gaoithe

1
К вашему сведению, вы можете увидеть использование диска тонкого пула с помощью " sudo lvs". Это помогает, когда вы пытаетесь выяснить, «сколько» дискового пространства вам нужно очистить (используя данные ответы).
Аарон Д. Мараско

Ответы:


31

Ты можешь использовать:

docker system prune -a -f --volumes

где:

  • -a == удаляет все неиспользуемые изображения
  • -f == сила
  • --volumes == сократить объемы.

см. https://docs.docker.com/engine/reference/commandline/system_prune/#description

Кстати, у меня было много проблем, когда я использовал драйвер devicemapper в своей среде. Раньше я чистил, как уже упоминал, но остались и другие проблемы с устройством. Настоятельно рекомендую перейти на overlay2, он решил почти все полностью.


1
Мы регулярно запускаем команды в ответе @ Cokoda-Raka, но на одном конкретном хосте Docker эта команда была необходима, когда overaly2 использовал значительный объем дискового пространства, больше, чем должен был. Думаю, я добавлю эту команду и к нашим автоматическим задачам очистки.
StockB

1
Это помогло в RHEL 7 с Docker 1.13.1. После запуска docker container prune, docker image prune, docker volume pruneмы еще получили / ошибку Thin Pool devmapper. Вышеупомянутая команда сработала, освободив необходимое пространство и устранив необходимость перезапуска демона.
Джонатан Элмор

167

Просто запустите эти три. Нет необходимости удалять РАБОЧИЕ контейнеры.

  1. Очистка завершенных процессов:

    docker rm $(docker ps -q -f status=exited)
    
  2. Очистите оборванные тома:

    docker volume rm $(docker volume ls -qf dangling=true)
    
  3. Очистить оборванные изображения:

    docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
    

4
Я узнал об этом отсюда: stackoverflow.com/questions/32723111/…
Cokorda Raka

19
Версия 1.13 теперь позволяет docker system prune вызывать docs.docker.com/engine/reference/commandline/system_prune
Вивек Кодира 06

2
Вероятно, это должен быть принятый ответ. Другой ответ потенциально может убить больше контейнеров, чем вы хотите убить.
DigitalFiz

2
Эти команды очень полезны для очистки диска машины, но не устранили проблему с устройством сопоставления устройств и пространством.
Пауло Оливейра

5
Я до сих пор не понимаю, «что» означает это сообщение об ошибке, поэтому, даже если эти команды работают, я не совсем понимаю, почему. Что такое «тонкий пул»? И какое отношение имеют завершающиеся процессы к «освобождению блоков данных»?
yiati
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.