在Azure容器实例(ACI)中运行Gitlab Runner

时间:2020-07-23 12:56:21

标签: azure docker gitlab gitlab-ci-runner azure-container-instances

我想在Azure容器实例(ACI)中运行Gitlab-Runner。

为此,我在Azure ACI中运行了docker容器gitlab/gitlab-runner

使用以下命令,我为Gitlab服务器注册该运行程序。

gitlab-runner register \
  --non-interactive \
  --run-untagged=true \
  --locked=false \
  --executor "docker" \
  --docker-image docker:latest  \
  --url "https://gitlab.com/" \
  --registration-token "MyTokenYYYYYYYY" \
  --description "my-own-runner" \
  --tag-list "frontend, runner" \
  --docker-volumes /var/run/docker.sock:/var/run/docker.sock

新运行程序也被gitlab识别。但是,当我工作时,会出现以下错误。

Preparing the "docker" executor
ERROR: Failed to remove network for build
ERROR: Preparation failed: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? (docker.go:960:0s)

如果我在笔记本电脑上以相同配置在本地运行Runner,则一切正常。如何在Azure ACI中使用它?

注册时如何在docker袜子中安装Azure ACI?

在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您将无法在Azure ACI中创建的容器中运行另一个Docker容器。为了实现“ docker-in-docker”(dind),守护程序实例(在本例中为您的ACI容器)需要在特权模式下运行,这将允许逐步访问您与其他ACI用户共享的主机。您可以在read about this more on Docker hub上显示以下内容:

注意:--privileged是Docker-in-Docker运行所必需的 正确,但应谨慎使用,因为它可提供完全访问权限 主机环境,如 Docker文档。

常见的解决方案是使用一个由0个或更多VM组成的自动缩放组,为gitlab运行程序及其生成的容器提供计算资源。