2016-10-05 2 views
1

Я сделал курс Докера, чтобы выполнить его, и я пытаюсь перенести свое первое приложение. При ежедневном использовании мне трудно отслеживать доступное место на диске. Я заметил, что каждый раз, когда я запускаю изображение и удаляю его, он не возвращается к исходному количеству свободного места.Docker заполняет мое дисковое пространство

Цикл жизни я даю свой контейнер, с нуля, чтобы удаляемый: докер сборки ...

  • докер пробег CONTAINER_TAG
  • докер остановка CONTAINER_TAG
  • гт докер CONTAINER_ID
  • rmi docker image_id

Контейнеры, которые выполняются обычным способом от кивок e и стандартный redis. Моя ОС - OSX 10.11.6

В конце дня я вижу, что продолжаю терять Mbs. Что я делаю не так? Докер это кэширование, возможно, что-то я упускаю на дороге?

ответ

2

Docker on Mac имеет дополнительную проблему, которая причиняет боль многим людям: файл docker.qcow2 может вырасти из пропорций (до 64 гб) и никогда не будет сокращаться самостоятельно.

https://github.com/docker/for-mac/issues/371

Как указано в одном из ответов на djs55 это в планировании быть фиксированной, но не быстро исправить.

The .qcow2 подвергается воздействию ВМ как блочного устройства с максимальным размером из 64GiB.По мере создания новых файлов в файловой системе контейнерами на блок-устройство записываются новых секторов. Эти новые сектора: , добавленные к файлу .qcow2, что приводит к увеличению его размера, пока он не станет полностью выделенным . Он перестает расти, когда он достигает максимального размера .

...

Мы надеемся исправить это в несколько этапов: (отметим, что это еще в стадии планирования/проектирования, но я надеюсь, что это дает вам представление)

1) мы перейдем к протоколу соединения, который поддерживает TRIM, а реализует отслеживание свободного блока в файле метаданных рядом с qcow2. Мы создадим инструмент уплотнения, который можно запустить автономно, чтобы сжать диск (немного похоже на конвертер qemu-img, но без dd if =/dev/zero , и он должен быть быстрым, потому что он уже будет знать, где пустой пространство)

2) мы будем автоматизировать ход инструмента уплотнению над VM перезагружается, предполагая, что это достаточно

3) мы будем перейти к онлайн-уплотнителем (который немного напоминает быстрый GC в языке программирования )

Мы также изучаем максимальный размер .qcow2 настраивается. Возможно, 64GiB слишком велик для некоторых сред, а меньшая крышка поможет?

+0

Это anwser. Мой .qcow2 был до 35Gb ++! –

+0

Большое спасибо. Я думаю, что единственный способ справиться с этим - это часто очищать этот файл. –

+0

@FrancoRabaglia Да, я не вижу правильного обходного пути прямо сейчас, это будет первая фаза исправления, которая запланирована:/Если я обнаруживаю какие-либо обновления, я отредактирую их в ответ. – Gimby

0

Есть несколько вариантов о том, как ограничить Docker дискового пространства, я бы начать с ограничения/вращающаяся журналы: Docker container logs taking all my disk space

Э.Г. если у вас есть последняя версия докера, вы можете запустить ее с опцией --log-opt max-size=50m на контейнер. Кроме того - если у вас есть старые, неиспользуемые контейнеры, вы можете рассмотреть возможность взглянуть на журналы докеров, которые расположены на /var/lib/docker/containers/*/*-json.log

7

Есть три области хранения Докер, которые могут монтировать вверх, потому что Docker осторожен - это автоматически не удаляет их: выходят контейнеры, неиспользуемые объемы контейнеров, неиспользуемые слои изображения. В среде разработчиков с большим количеством возможностей для построения и работы, это может быть много дискового пространства.

Эти три команды очистки вниз ничего не используется:

  • docker rm $(docker ps -a -q) - удалить остановленные контейнеры
  • docker rmi $(docker images -f "dangling=true" -q) - удалить слои изображения, которые не используются в каких-либо изображений
  • docker volume rm $(docker volume ls -qf dangling=true) - удалить объемы, которые не являются используемых в любых контейнерах.

Они безопасны для запуска, они не будут удалять слои изображений, на которые ссылаются изображения, или объемы данных, используемые контейнерами. Вы можете их псевдонизировать и/или помещать в задание CRON для регулярной очистки локального диска.

2
docker container prune 
docker system prune 
+0

Что это будет делать? Пожалуйста, дополните. – Hizqeel

+0

есть другие команды черновиков, которые могут помочь и, вероятно, должны быть добавлены к этому ответу, в том числе «докеры изображений» и «докеры». – jpgard

Смежные вопросы