У нас есть конвейер непрерывного объединения на circleci, который делает следующее:
- Загружает repo/image: mytag1 из каталога кеша, чтобы использовать кешированные слои
- Создает новую версию: docker build -t repoimage: mytag2
- Сохраняет новую версию в каталоге кэша с сохранением docker
- Запускает тесты
- Вставляет док-концентратор: docker push repo/image: mytag2
Проблема заключается в шаге 5. Шаг нажатия занимает 5 минут каждый раз. Если я правильно понимаю, докер-концентратор предназначен для кэширования слоев, поэтому нам не нужно повторно вводить такие вещи, как базовое изображение и зависимости, если они не обновляются.
Я запустил сборку дважды подряд, и я вижу много кроссовера в хэше слоёв. Но вместо того, чтобы "Изображение уже существует", я вижу, что "Изображение успешно нажато".
Вот результат вывода док-станции build 1 и здесь build 2
Если вы разделите эти два файла, вы увидите, что в каждой сборке различаются только 2 слоя:
< ca44fed88be6: Buffering to Disk
< ca44fed88be6: Image successfully pushed
< 5dbd19bfac8a: Buffering to Disk
< 5dbd19bfac8a: Image successfully pushed
---
> 9136b10cfb72: Buffering to Disk
> 9136b10cfb72: Image successfully pushed
> 0388311b6857: Buffering to Disk
> 0388311b6857: Image successfully pushed
Итак, почему все изображения должны перетаскиваться каждый раз?