Как вы кэшируете изображения, извлеченные из Docker Hub, в частный реестр Docker?

Первая строка моего .gitab-ci.yml следующая:

image: gradle:5.0-jdk11

Этот образ весит 601 МБ, и мне постоянно приходится извлекать его из докер-хаба при каждом вызове моей сборки.

Есть ли способ сохранить образ в репозитории докеров проекта в Gitlab? Чтобы он автоматически помещался туда при первом запуске сборки, а затем извлекался оттуда при последующих вызовах сборки?


person vab2048    schedule 18.12.2018    source источник


Ответы (2)


Если ваш Gitlab-runner уже загрузил образ Docker, в следующий раз, когда он ему понадобится, он загрузит локальный образ вместо повторной загрузки образа размером 601 МБ. Это поведение по умолчанию, если вы не измените его, как в https://docs.gitlab.com/runner/executors/docker.html#how-pull-policies-work

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

person djuarezg    schedule 18.12.2018

Это должно быть описано на странице "зависимости кэша в GitLab CI/CD", объявление вашего изображения артефактом в кеше (определено cache:paths)

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

Проверьте также, что содержит ваш каталог кеша Docker runner< /а>.

Если проблема не устранена, попробуйте использовать частный реестр, как в issue 41924:

image: my-private-registry:5000/my-ci-image:latest
person VonC    schedule 18.12.2018