如何在托管的 Ubuntu 代理上启用 Azure Pipelines 中的实验性 Docker 守护程序
Posted
技术标签:
【中文标题】如何在托管的 Ubuntu 代理上启用 Azure Pipelines 中的实验性 Docker 守护程序【英文标题】:How do enable Experimental Docker daemon in Azure Pipelines on hosted Ubuntu agent 【发布时间】:2018-09-26 11:43:38 【问题描述】:我希望在构建 docker 映像时能够使用 --squash
开关,因为这会减少几 MB 的结果映像。
这需要为 docker 启用实验性功能。
执行docker --version
确认(应该)在托管的 Azure Pipelines 代理上关闭实验性功能。
Server:
Engine:
Version: 18.03.1-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:15:30 2018
OS/Arch: linux/amd64
Experimental: false
Linux 代理正在运行
Kernel Version: 4.15.0-1022-azure
Operating System: Ubuntu 16.04.4 LTS
OSType: linux
Architecture: x86_64
我尝试更改 /etc/systemd/system/docker.service.d/docker.conf
和 /etc/docker/daemon.json
以使用/包含实验性标志,但未能成功启用它。
docker.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// --experimental=tr
或
daemon.json
"experimental": true
但不确定我是否可以在托管代理上重新启动守护程序。
目前正在做 yaml 构建,从 bash 调用 docker,但在 web 界面中也没有看到任何关于实验性的东西。
如果我启动自己的 Ubuntu 虚拟机并在其上托管代理,则实验可以工作,但希望通过使用托管代理来避免成本和维护。
【问题讨论】:
Experimental flag 在 Ununtu VM 中运行良好,但在主机上不行?你能把你的 daemon.json 文件加起来吗? 添加了示例文件,但认为问题是 Azure Pipelines 托管代理不会让我重新启动守护程序,因此可能需要其他一些方法来打开实验模式。在我自己的机器上它运行良好,但我可以完全控制机器。 如果不重新启动 docker daemon,我认为它不会起作用。但是根据您上面的信息,您在 docker.conf 中配置错误。只需——实验就够了,不需要‘=true’。 【参考方案1】:在 Ubuntu 映像中,您可以在 daemon.json
更新后简单地重新启动 docker 服务。我使用的脚本有两行:
echo ' "experimental": true ' | sudo tee /etc/docker/daemon.json
sudo service docker restart
【讨论】:
【参考方案2】:在我的管道中的 docker build 任务之前使用以下脚本启用它。
- script: |
echo ' "experimental": true ' | sudo tee /etc/docker/daemon.json
sudo service docker restart
displayName: 'Enable docker experimental features for squashing '
【讨论】:
以上是关于如何在托管的 Ubuntu 代理上启用 Azure Pipelines 中的实验性 Docker 守护程序的主要内容,如果未能解决你的问题,请参考以下文章
在 Azure Pipelines 托管 Linux 代理上运行 Cypress.io
Azure DevOps 构建管道自托管代理“设备上没有剩余空间”
在 Windows Server 2019 自托管代理上找不到 azure cli 扩展
Azure CDN - 启用 HTTP 压缩 - 托管 Web 角色