我想在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?
在此先感谢您的帮助。
答案 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运行程序及其生成的容器提供计算资源。