Я заметил со многими основанными на Debian/ubuntu изображениями докера, необходимо сделать apt-get update
перед установкой любых пакетов. Кэш абсолютно ясен. Я чувствую, что должен сделать то же сам после того, как я делаю мой RUN apt-update && apt-get install -y whatever
. Я не могу выяснить, как сделать это. Есть ли команда, или сделайте меня просто rm -rf
q папка?
НЕ «очищайте» базу данных пакетов apt, если вы не обладаете высокой квалификацией и не знаете точно, что вы делаете (и почему). Ваша система Ubuntu нуждается в этом индексе пакетов для правильной работы менеджера пакетов.
Цель sudo apt update
перед выполнением большинства действий с пакетом состоит в том, чтобы обновить базу данных пакета самой последней информацией перед запуском фактической процедуры, которую вы хотите выполнить. Это не позволяет apt запрашивать устаревшие или отозванные пакеты и сбивать вас с толку возникающими ошибками.
Преодолей это чувство. Это неправильно.
Когда вы создаете образ докера, вы стараетесь сделать его как можно меньше. Поэтому тот, кто создает образ при установке пакета, удаляет кэш, чтобы сохранить его небольшим. В результате вы должны запустить apt-get update
, если хотите установить какой-либо пакет.
И так как каждая выполняемая команда docker создает слой, и его содержимое будет оставаться «навсегда», после того, как вы закончите установку пакета, вы также захотите удалить кеш.
Два способа сделать это один из следующих:
rm -rf /var/cache/apt/archives
. ИЛИ
apt-get clean
очищает локальный репозиторий извлеченных файлов пакетов. Он удаляет все, кроме файла блокировки, из / var / cache / apt / archives / и /var/cache/apt/archives/partial/.
(источник: справочная страница)
blockquote>
rm -rf / var / lib / apt / lists / *
Это в лучших практиках Docker :
при очистке кэша apt путем удаления
/ var / lib / apt / lists
это уменьшает размер изображения, поскольку кеш apt не хранится в слое.
/ var / cache / apt / archives
не содержит большого количества данных. Сравните du
между этими двумя каталогами.
Как сказано в ответе Дэвида, вы обычно apt-get clean
или rm -rf /var/cache/apt/archives
.
При этом удаляется кеш пакетов, который, согласно мануалу, содержит сами загруженные пакеты.
Однако, согласно рекомендациям Docker, apt-get clean
выполняется для вас на любом официальном образе Ubuntu/Debian.
Единственное, что осталось очистить в этом случае, это кеш индекса репозитория: вам нужно всего лишь
rm -rf /var/cache/apt/lists
.