Используйте docker dind с GitLab runner на ecs fargate

Я устанавливаю GitLab runner на EC2, который запускает задания в кластере Fargate ECS. Я следовал этому руководству шаг за шагом: https://docs.gitlab.com/runner/configuration/runner_autoscale_aws_fargate

Во время моего CI/CD я создаю образ докера, а затем хочу повторно использовать его на других этапах моего CI/CD. Поэтому, когда я использовал общий бегун, я использовал docker dind:

  image: docker:stable
  services:
    - docker:dind

Мой config.toml выглядит так:

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "fargate-runner"
  url = "https://gitlab.com/"
  token = "KRGVsYCF-V-D1u7UvCjq"
  executor = "custom"
  builds_dir = "/opt/gitlab-runner/builds"
  cache_dir = "/opt/gitlab-runner/cache"
  [runners.custom]
    config_exec = "/opt/gitlab-runner/fargate"
    config_args = ["--config", "/etc/gitlab-runner/fargate.toml", "custom", "config"]
    prepare_exec = "/opt/gitlab-runner/fargate"
    prepare_args = ["--config", "/etc/gitlab-runner/fargate.toml", "custom", "prepare"]
    run_exec = "/opt/gitlab-runner/fargate"
    run_args = ["--config", "/etc/gitlab-runner/fargate.toml", "custom", "run"]
    cleanup_exec = "/opt/gitlab-runner/fargate"
    cleanup_args = ["--config", "/etc/gitlab-runner/fargate.toml", "custom", "cleanup"]

Что мне нужно сделать, чтобы использовать команду docker во время CI/CD и сохранить образ docker для каждой сборки между всеми этапами?

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

Cyril G. 16.03.2022 15:01

Я тоже об этом думал. Чтобы использовать сохранение/загрузку докера, должен ли я использовать docker dind или просто установить докер в моем образе Debian, который я использую в ECS для каждого задания?

Howins 16.03.2022 15:06

Вам, вероятно, не нужен dind, так как ваш базовый образ docker:stable, но я не помню, когда dind полезен.

Cyril G. 16.03.2022 15:09
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
1
3
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

docker:dind требует привилегированного выполнения. На Fargate нельзя использовать привилегированные контейнеры, поэтому это невозможно напрямую.

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

Вы также можете изучить альтернативы, такие как с помощью CodeBuild, для создания образов с исполнителем fargate.

Спасибо, я посмотрю, какой из них лучше для меня между kaniko и CodeBuild

Howins 23.03.2022 14:19

Другие вопросы по теме