У меня есть несколько контейнеров docker, запущенных на машине linux, папка /docker/overlay2 очень быстро растет на диске. Из-за этого мы не можем загружать новые образы
Когда я проверяю содержимое overlay2, я обнаруживаю, что он содержит очень старые слои (август 2019 г.)
Я попробовал следующую команду для очистки тома docker ls -qf dangling=true | xargs -r docker volume rm docker rm -v $(sudo docker ps -a -q -f status=exited) docker system prune
Но восстановленный 0B
Также провереноhttps://stackoverflow.com/questions/46672001/безопасно ли это-чистить-docker-overlay2
https://docs.docker.com/config/pruning/
https://success.docker.com/article/error-message-no-space-left-on-device-in-default-machine
Как лучше всего это чистить?
логи докера
Starting Oracle Net Listener.
Запуск экземпляра Oracle Database 11g Express Edition.
Ожидание запуска БД
SQL*Plus: выпуск 11.2.0.2.0 Производство во вторник 14 июля 05:04:23 2020 г.
Copyright (c) 1982, 2011, Oracle. Все права защищены.
Подключено к: Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64-битная производственная версия
SQL> Отключено от Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64-битная производственная БД запущена /opt/ion/platform/daemon/DM_DOCKER / Запущен демон из /opt/ion/platform/daemon/DM_DOCKER/mkvd118p1.lx Ожидание порта 13000 bash: connect: Сеть недоступна bash: /dev/tcp/localhost/13000: Сеть недоступна Демон запущен на порту 13000 / Выполнение: /startup/ansible_container_startup.sh Выполнение: /startup/cups_startup.sh Выполнение: /startup/samba_startup.sh Выполнение: /startup/start_check_mk_agent.sh
докер дифф Ошибка ответа от демона: mkdir /docker/overlay2/f033daa6d065ff85484b54fcd9a7786f839917d180129ea8fed0f627ad776095-init/merged: на устройстве не осталось места
решение1
Типичным ответом для большинства людей, когда overlay2 слишком большой, является запуск очистки, обрезка остановленных контейнеров и изображений, которые были не помечены (заменены более новым тегом). Это делается с помощью , docker prune
и есть другие параметры этой команды, чтобы удалить больше данных. Для получения более подробной информации об очистке этой папки в целом см. "Безопасно ли очищать docker/overlay2/".
Если бы проблема была /var/lib/docker/containers
в увеличении размера папки, я бы подозревал, что логи записываются в stdout/stderr, и естьразличные способы очистки и предотвращения избыточного ведения журналов в будущем.
Однако в этой проблеме, если папка overlay2 быстро увеличивается в размере при запуске контейнера, этот контейнер, скорее всего, записывает в файловую систему чтения/записи, связанную с этим контейнером. Каждое изменение файла запускает копирование при записи на определенный слой контейнера. Вы можете диагностировать, какие файлы создаются или изменяются, по docker container diff
определенному идентификатору контейнера. В вашей ситуации, похоже, это происходит достаточно быстро, чтобы заполнить ваш диск, поэтому на вашем компьютере может не хватить емкости для отладки или запуска этого контейнера, поэтому вам, возможно, придется отлаживать его на компьютере с большей емкостью.
решение2
Вы можете использовать его docker image prune -a
для удаления бесполезных изображений.