випуск простору на 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 у проблемах зберігання, які не можна знайти, github.com/docker/docker/isissue/3182 " devicemapper не рекомендується для виробничого використання". Краще відійдіть від devicemapper з кількох причин. Мені здалося, що досить просто перейти на драйвер накладеного накопичувача, YMMV звичайно, але, сподіваюся, не надто багато. 'rm -rf / var / lib / docker' є дещо необов'язковим при переключенні, але простий, і я б дуже рекомендував це. projectatomic.io/blog/2015/06 / ...
gaoithe

1
FYI, ви можете бачити використання тонкого пулу диска з " sudo lvs". Це допомагає, коли ви намагаєтеся розібратися на "скільки" дискового простору для очищення (використовуючи дані відповіді).
Аарон Д. Мараско

Відповіді:


28

Ви можете використовувати:

docker system prune -a -f --volumes

де:

  • -a == видаляє всі невикористані зображення
  • -f == сила
  • --обсяги == обсяги чорносливу.

дивіться: https://docs.docker.com/engine/reference/commandline/system_prune/#description

Як бічна примітка, у мене було багато проблем, коли я використовував драйвер devicemapper у своєму оточенні. Раніше я прибирав, як я згадував, але були ще інші проблеми з девайковими машинами. Настійно рекомендую перейти до overlay2, це вирішило майже все повністю.


1
Ми регулярно запускаємо команди у відповідь @ Cokoda-Raka, але один конкретний хостинг Докера, ця команда була необхідна, коли over22 використовував значну кількість дискового простору, більше, ніж це повинно бути. Думаю, я додам цю команду до наших автоматизованих завдань очищення.
StockB

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

167

Просто запустіть цих трьох. Не потрібно видаляти контейнери RUNNING.

  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 посилатися
Vivek Kodira

1
Це, мабуть, має бути прийнятою відповіддю. Інша відповідь може потенційно вбити більше контейнерів, ніж ви хочете вбити.
DigitalFiz

2
Ці команди дуже корисні для очищення диска машини, але не виправили проблему з пристроєм для девайса та простором.
Пауло Олівейра

4
Я досі не розумію "що" означає це повідомлення про помилку, тому навіть якщо ці команди працюють, я не повністю зрозумів, чому. Що таке "тонкий басейн"? І що пов’язане із процесами виходу із "звільнення блоків даних"?
yiati
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.