【问题标题】:Azure Container Service Container as a VSTS Agent to build docker imagesAzure Container Service Container 作为 VSTS 代理来构建 docker 镜像
【发布时间】:2018-06-26 19:51:54
【问题描述】:

我创建了 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 的信息。

【问题讨论】:

    标签: docker azure-devops azure-container-service


    【解决方案1】:

    请参阅此博客:Using the Visual Studio Team Services Agent Docker Images

    支持使用Containers构建源码的Ag​​ent终于来了 到您最感兴趣的部分。我们如何实际设置一个 这些代理和避免上述错误?

    有一个名为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 Container 内的主机上挂载 /var/run/docker.sock,例如此线程中提到的问题:Mounting volume in Azure-Container-Service not working for traefik.toml and /var/run/docker.sock

    【讨论】:

    • 我在裸机上有这样的设置,没关系。他们将 VSTS 代理作为 docker 实例运行。问题在于 Azure 容器服务。我不知道是否可以从 ACS Container 内的主机上挂载 /var/run/docker.sock
    • @Mateusz 根据我的研究,似乎找不到从 ACS 容器内的主机挂载 /var/run/docker.sock 的方法,例如这个线程:stackoverflow.com/questions/47463640/…
    • 我认为你是对的。您能否将其发布为答案,我将其标记为正确。
    • @Mateusz 更新了答案:)
    猜你喜欢
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 2021-12-10
    • 2018-10-31
    • 1970-01-01
    相关资源
    最近更新 更多