在 ecs fargate 上将 docker dind 与 GitLab runner 一起使用
Use docker dind with GitLab runner on ecs fargate
我在 EC2 上设置了一个 GitLab runner,它在 Fargate ECS 集群上触发作业。
我一步步跟着这个教程:https://docs.gitlab.com/runner/configuration/runner_autoscale_aws_fargate
在 CI/CD 期间,我构建了 docker 图像,然后我想在 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"]
我应该如何在 CI/CD 期间使用 docker 命令并在所有阶段之间保留每个构建的 docker 图像?
docker:dind
需要特权执行。不可能在 Fargate 上使用特权容器,所以这不是直接可能的。
但是,您可以使用 kaniko 等无守护程序映像构建器来构建 docker 映像,并且可以选择将这些映像用作以后作业的构建映像。
您还可以探索替代方案,例如 using CodeBuild 使用 fargate 执行器构建映像。
我在 EC2 上设置了一个 GitLab runner,它在 Fargate ECS 集群上触发作业。 我一步步跟着这个教程:https://docs.gitlab.com/runner/configuration/runner_autoscale_aws_fargate
在 CI/CD 期间,我构建了 docker 图像,然后我想在 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"]
我应该如何在 CI/CD 期间使用 docker 命令并在所有阶段之间保留每个构建的 docker 图像?
docker:dind
需要特权执行。不可能在 Fargate 上使用特权容器,所以这不是直接可能的。
但是,您可以使用 kaniko 等无守护程序映像构建器来构建 docker 映像,并且可以选择将这些映像用作以后作业的构建映像。
您还可以探索替代方案,例如 using CodeBuild 使用 fargate 执行器构建映像。