如何在托管的Ubuntu代理上的Azure Pipelines中启用实验Docker守护程序

时间:2018-09-26 11:43:39

标签: docker azure-devops azure-pipelines

在构建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 VM并在其上托管代理,则可以进行实验,但是希望通过使用托管代理来避免成本和维护。

2 个答案:

答案 0 :(得分:2)

https更新之后,您可以在Ubuntu Image中简单地重新启动docker服务。我使用两行脚本:

#include <algorithm>
#include <iostream>
#include <vector>

int main() {
    std::vector<int> v;
    v.push_back(0);
    v.push_back(1);
    v.push_back(2);
    std::cout << find(v.begin(), v.end(), 1) - v.begin() << std::endl;
    return 0;
}

答案 1 :(得分:0)

在我的管道中的 docker build 任务之前使用以下脚本启用它。

- script: |
      echo '{ "experimental": true }' | sudo tee /etc/docker/daemon.json
      sudo service docker restart
  displayName: 'Enable docker experimental features for squashing '