Да, промежуточные слои занимают место на диске, и обычно это хорошо. Это облегчает повторное использование слоев и быстрое построение. Вместо этого вам следует сконцентрироваться на сокращении количества слоев путем оптимизации файла Docker. Ваше окончательное docker изображение на самом деле является комбинацией всех слоев. Таким образом, вы не можете удалить слои, если не удалите окончательное изображение и никакое другое изображение не использует слои.
docker build --rm
не экономит дополнительное дисковое пространство. Чтобы понять почему, вы должны знать, как работает docker build
- каждая инструкция (например, RUN) в файле Docker запускает новый контейнер, после выполнения инструкции контейнер завершает работу и фиксируется в изображении.
docker build --rm
удаляет эти промежуточные контейнеры . Параметр --rm
по умолчанию имеет значение true, поэтому docker build --rm
не оказывает дополнительного влияния по сравнению с docker build
. По какой-то причине, если вы хотите сохранить промежуточные контейнеры, вы можете отключить их с помощью --rm=False
.
Если есть какие-либо слои, которые не используются никакими другими изображениями, вы можете удалить их. Они называются dangling
слоями. Вы можете удалить их с помощью следующей команды -
docker rmi $(docker images -f "dangling=true" -q)