Рубрики
Uncategorized

[ Gitlab Runner] Постройте изображение Docker в задании Docker в контейнере Gitlab Runner

Было бы очень здорово, если бы мы могли запустить каждую задания в трубопроводе Гитлаба в Contai … Tagged с DevOps, Gitlab, CICD, Docker.

Было бы очень здорово, если бы мы могли запустить каждую задания в трубопроводе Gitlab в контейнерных средах. Gitlab Runner позволяет это имея Изображение в целевых работах, сопровождающих Docker исполнитель.

Но … как насчет запуска этих заданий в Gitlab Runner, который также работает в своем собственном контейнере? А потом, построить, отметьте, нажмите изображения Docker в качестве работы?

О, да! Мы можем.

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

И наличие бегуна Gitlab Runner в качестве контейнера довольно круто, верно? Мы можем легко начать и обновить его.

Как насчет того, как вы можете спросить часть строительства и проталкивания внутри контейнера. эта часть … Я просто хочу попробовать сделать каждую работу, используя контейнер. Это все. 🤪 Если вы можете подумать о какой -либо причине, пожалуйста, помогите мне в комментарии.

Вот шаги, которые мы будем делать сегодня:

  1. Подготовьте, как начать бегуна
  2. Зарегистрируйте бегуна
  3. Начни это!

Подготовьте, как начать бегуна

Я обычно использую Docker-Compose для выполнения контейнера Docker.

version: "3"
services:
  runner:
    image: gitlab/gitlab-runner:alpine
    restart: always
    volumes:
      - /Users/zarewoft/gitlab-runner/config:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock

Сначала я сопоставляю свой конфигурация каталог для потребления config.yoml Это будет создано позже.

Во -вторых, Docker.sock нанесен на карту для размещения исполнителя Docker. Это заставит исполнителя взаимодействовать с Docker Docker Docker Docker Docker, поэтому его задания создаст контейнеры, которые будут братьями и сестрами бегуна.

Зарегистрируйте бегуна

Бегун должен быть зарегистрирован на сервере Gitlab. Здесь мы начнем недолговечный контейнер Gitlab Runner, чтобы сделать именно это. Он зарегистрируется на сервере Gitlab и создаст config.yoml использовать в будущем.

docker run --rm -v /Users/zarewoft/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:alpine register -n \
   --url https://gitlab.com/ \
   --registration-token REGISTRATION_TOKEN \
   --executor docker \
   --description "My Docker Runner" \
   --docker-image "docker:stable"

Из примера я установил свой конфигурация Справочник, чтобы постоянно хранить config.yoml , то же место, что и то, что будет потреблять мой предыдущий Docker-Compose. Я также предоставляю Docker-Image который говорит исполнителю, что такое изображение по умолчанию.

Кэш изображения слоев

Представьте себе, что определите работу в трубопроводе Гитлаба. Работа будет создавать и раздвигать изображение Docker, которое содержит наше приложение. Он определенно будет использовать изображение, похожее на Docker: стабильный Анкет В процессе он создаст много слоев изображения Docker, которые можно повторно использоваться в будущем, к сожалению, он разрушит вместе с контейнером работы.

Нет. Мы не будем жертвовать минутами в каждом трубопроводе, которым мы бежим !!! Было бы неплохо, если бы мы сможем сохранить эти слои где -то 🤔.

О, или мы можем просто заставить их использовать Docker Docker Docker Docker!

Вот идет Docker-Volumes Анкет Опция сообщает Docker Daemon, который является хостом, чтобы карту Docker.sock хоста в каждый контейнер, который он создаст для любых заданий.

Добавив это, наша последняя команда регистрации выглядит так:

docker run --rm -v /Users/zarewoft/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:alpine register -n \
   --url https://gitlab.com/ \
   --registration-token REGISTRATION_TOKEN \
   --executor docker \
   --description "My Docker Runner" \
   --docker-image "docker:stable" \
   --docker-volumes /var/run/docker.sock:/var/run/docker.sock

Начни это!

А потом, просто вверх по докеру.

docker-compose up -d

Надеюсь, вы найдете это достаточно информативным. Если есть какие -либо ошибки, пожалуйста, дайте мне знать в комментарии. Спасибо! 😊

Оригинал: «https://dev.to/zarewoft/gitlab-runner-build-docker-image-in-docker-job-on-gitlab-runner-container-5g7g»