Я использую Gitlab-CI для создания некоторых образов Docker в образе docker-in-docker. Это важно только потому, что каждая сборка использует новую среду docker-in-docker с пустым кешем Docker. Можно кэшировать кеш в Gitlab и восстановить его позже, но это не кажется безопасным - это сделал кто-то в Интернете, - но это не кажется безопасным.
У меня есть реестр Docker в Nexus, который я успешно использовал для извлечения и извлечения.
Я также настроил сохранение изображений в кеш Gitlab-ci с помощью docker save
и загрузку из кеша с помощью docker load
.
После извлечения из реестра или загрузки из кеша Gitlab-CI я могу запустить docker build --cache-from ...
, и Docker будет строить постепенно, не перестраивая никакие слои образов, которые не изменились.
Все построенные изображения получают тег latest
.
Часть, которая не работает, заключается в следующем: если я загружаю изображение из кеша Gitlab-CI, а затем извлекаю его из реестра, изображение из реестра всегда используется как точка входа в Docker. просмотр, даже если он на несколько недель старше загруженного из кеша. Это похоже на дефектное поведение - мягко говоря, это в высшей степени неожиданное и недокументированное, насколько я могу судить.
Как я могу сказать Docker: 1) использовать более поздние как самые последние (возможны альтернативы без тега latest
) и 2) загружать только те слои, которые изменились с момента загрузки в кеш Docker?
Это 2 вопроса, но я надеюсь, что они ответят одинаково.