Azure构建代理中如何开放Docker 2375端口?
解决Azure Build Pipeline中fabric8 Docker Maven插件连接失败问题
Azure托管构建代理中的Docker默认不会开放2375 TCP端口,而是通过Unix socket(Linux代理)或命名管道(Windows代理)进行通信,直接连接localhost:2375自然会出现拒绝连接的错误。以下是几种可行的解决方式:
方案1:配置插件使用Docker Socket(推荐,安全且适配性强)
修改项目pom.xml中的fabric8 Docker插件配置,指定Docker主机为socket路径,无需开放2375端口:
<plugin> <groupId>io.fabric8</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.43.4</version> <configuration> <!-- Linux代理下的Docker Socket路径 --> <dockerHost>unix:///var/run/docker.sock</dockerHost> <!-- 保留你原有的其他配置,如镜像、构建参数等 --> </configuration> </plugin>
方案2:强制开启2375 TCP端口(不推荐,存在安全风险)
如果业务必须依赖2375端口,可以在Linux托管代理中修改Docker daemon配置并重启服务:
- 在Azure Pipeline的YAML文件中添加初始化步骤:
steps: - script: | sudo mkdir -p /etc/docker echo '{ "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"] }' | sudo tee /etc/docker/daemon.json sudo systemctl restart docker displayName: 'Configure Docker to listen on TCP port 2375'
- 构建时通过环境变量指定Docker主机,无需修改pom.xml:
steps: - script: mvn clean package docker:build env: DOCKER_HOST: tcp://localhost:2375
方案3:Windows托管代理适配(若项目依赖Windows环境)
Windows托管代理中的Docker Desktop可以通过配置开启2375端口,添加PowerShell初始化步骤即可:
steps: - powershell: | Start-Process -FilePath "C:\Program Files\Docker\Docker\Docker Desktop.exe" -Wait Set-Content -Path 'C:\ProgramData\Docker\config\daemon.json' -Value '{ "hosts": ["npipe:////./pipe/docker_engine", "tcp://0.0.0.0:2375"] }' Restart-Service Docker displayName: 'Enable Docker TCP port 2375 on Windows agent'
之后同样可以通过DOCKER_HOST=tcp://localhost:2375环境变量让插件识别端口。
注意事项
- 优先选择方案1,2375端口无认证机制,开放后会带来安全隐患;
- 确保使用的托管代理镜像自带Docker,如
ubuntu-latest、windows-latest均默认包含Docker环境。
内容的提问来源于stack exchange,提问作者user286974
相关产品推荐
相关产品推荐

