Как получить данные из реестра Docker только при необходимости или что вообще означает слово «последний»?

Я использую 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 вопроса, но я надеюсь, что они ответят одинаково.


person Jason Young    schedule 30.10.2017    source источник


Ответы (1)


Хорошо, если вы имеете в виду yourimage:latest, latest ничего не значит, потому что это всего лишь соглашение, а не гарантия того, что вы действительно загружаете буквально последнее (новейшее) изображение.

Если вы загрузите образ yourimage:latest с локального компьютера, а затем извлечете образ с таким же именем из реестра (yourimage:latest), последний будет своевременным latest. Потому что он отличается от первого, даже если первый будет своевременным, более новым. Если у него есть другой отпечаток пальца, он будет перезаписан.

person m4r10k    schedule 30.10.2017