Создание образов докеров на рабах с кешем - PullRequest
0 голосов
/ 27 мая 2019

У меня есть непрерывная система сборки, в которой образы докеров создаются после каждого коммита. Это масштабируемо, и каждая сборка находится на отдельном подчиненном устройстве. Он отлично работает для небольших образов Docker, но для больших изображений иногда требуется несколько часов, чтобы создать образ Docker для больших проектов, например веб-приложения. Это вызвано отсутствием док-кеша на ведомых, потому что они динамически создаются при запуске сборки

Интересно, есть ли какое-нибудь решение для разделения кеша докера между этими подчиненными узлами? Вы когда-нибудь сталкивались с этой проблемой?

EDIT

Как рекомендовано в ответах, я попытался построить с параметром --cache-from, но не сработал, потому что каждый узел по-разному вычисляет идентичных слоев :

enter image description here

Вот ссылка на сравнение

Есть идеи, почему Docker по-разному рассчитывает одинаковые слои?

1 Ответ

0 голосов
/ 27 мая 2019

Базовый принцип: Построить один раз, развернуть в любом месте .

Я понимаю, что вы строите изображение на разных мазях несколько раз.

Как насчет введения " репозитория изображений DTR или Docker-Hub " посередине.

  1. Создание образа один раз с использованием одного рабочего узла и Push в репозитории изображений.

  2. Потяните изображение на оставшийся рабочий узел.

Это помогает обеспечить согласованность окружающей среды, так как одно и то же изображение используется во всех областях.

, если вы хотите вставить изображение в Docker-Hub и отвести назад. Необходимо учитывать задержку в сети, прежде чем принимать решение.

Мы справились с этой проблемой с помощью DTR, который находится в той же сети, где у меня есть другой работник, и выталкивание и извлечение не занимало много времени.

DTR: Если безопасность и продвижение изображений могут быть другими проблемами, то с этим подходом можно справиться, создав критерии продвижения изображений.

PS: этот ответ будет улучшен на основе уточнений вопроса

...