В моем файле Docker у меня может быть такой шаг, который будет выглядеть так, чтобы установить некоторые пакеты.Проверьте обновленный пакет через yum в файле Docker
Run yum install pkg1 pkg2 -y &&\
yum -y clean all
Проблема заключается в том, что, когда я строю контейнер несколько раз, Docker Престола эта команда не меняется и никогда не запускает его. Вместо этого он предпочитает использовать ранее кэшированный уровень.
Однако pkg1 или pkg2 могут быть обновлены в репозитории yum и должны быть обновлены, а поскольку вместо него используется кешированный уровень докеров, контейнер не получает обновленные пакеты.
Я мог бы построить с опцией -no-cache, но это приведет к недействительности всех уровней кэша, что существенно замедлит сборку контейнера, как обычно, мои команды установки yum находятся ближе к концу моих файлов Dockerfiles.
Какова наилучшая стратегия для решения этой проблемы? Есть ли какое-либо решение только для недействительности кеша докеров, если в кеше и репо есть другая версия пакета?
Как насчет запуска 'yum clean expire-cache' перед' yum install'? – ciekawy
К сожалению, это не помогает. Фактическая команда запуска в файле Docker по-прежнему не будет изменена, поэтому докер будет думать, что ничего не изменилось и продолжает использовать свой кешированный уровень. Кроме того, я стараюсь удостовериться, что я всегда выдаю 'yum clean all' после команды yum (в рамках одного запуска docker), поэтому не должно быть никакого кэша yum, который может истечь. – user2566987
Создайте изображение со всеми командами вплоть до команды 'Run yum install pkg1 pkg2 ...'. Затем создайте новый файл Docker, который вытаскивает 'FROM' только что созданное изображение. Запустите 'docker build' с флагом' --no-cache', что приведет к недействительности последнего уровня кэша. – CtheGood