我创建了ACS实例并将其注册为VSTS代理。我使用图像lenisha/vsts-agent-infrastructure
使用Terraform。无论如何,我都想构建docker映像,但是使用来自ACS的代理,我得到了错误:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
。所以问题是是否有办法进入docker daemon?我无法找到有关如何在ACS(-v /var/run/docker.sock:/var/run/docker.sock
)中挂载docker.sock的信息。
答案 0 :(得分:2)
只需参考以下博客:Using the Visual Studio Team Services Agent Docker Images
支持使用容器构建源代码的代理最后,我们来 到您最感兴趣的部分。我们实际上如何设置一个 这些代理商,并避免上述错误?
有一个名为
VSTS_WORK
的环境变量,它指定 代理商应在哪里完成工作。我们可以更改位置 目录和卷的安装方式,以便在Docker容器中 在主机上运行,它将有权访问文件。要创建能够以这种方式使用docker的代理,请执行以下操作:
docker run -e VSTS_ACCOUNT=<youraccountname> \ -e VSTS_TOKEN=<your-account-Private-access-token> \ -e VSTS_WORK=/var/vsts -v /var/run/docker.sock:/var/run/docker.sock \ -v /var/vsts:/var/vsts -d \ microsoft/vsts-agent:ubuntu-16.04-docker-17.03.0-ce-standard
此处的重要命令是
-e VSTS_WORK=/var/vsts
,它告诉 代理来完成/var/vsts
文件夹中的所有工作。然后音量 使用-v/var/vsts:/var/vsts
挂载文件夹可以运行 VSTS代理中的docker容器,仍然可以看到所有文件。
更新:
根据我的研究,似乎找不到从ACS容器内部的主机装载/var/run/docker.sock
的方法,例如此线程中提到的问题:Mounting volume in Azure-Container-Service not working for traefik.toml and /var/run/docker.sock