You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Azure Virtual Machine配置CI/CD以部署Docker应用?

Azure VM + Docker + DevOps仓库 快速配置CI/CD流程方案

一、先确保Azure VM的Docker可远程访问

  • 修改Docker配置文件/etc/docker/daemon.json,添加远程连接配置:
    {
      "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]
    }
    
  • 重启Docker服务:
    sudo systemctl restart docker
    
  • 在Azure门户的VM网络设置里,添加入站安全规则,开放2375端口(生产环境务必配置TLS加密,避免裸端口暴露)
  • 本地测试连接有效性:
    docker -H tcp://<你的VM公网IP>:2375 info
    
    能返回Docker系统信息即为配置成功

二、配置CI流水线(以Azure DevOps为例)

新建流水线并关联你的代码仓库,修改流水线配置文件azure-pipelines.yml,核心步骤如下:

trigger:
- main # 监听主分支提交

pool:
  vmImage: 'ubuntu-latest'

steps:
- script: |
    docker build -t my-app:$(Build.BuildId) .
    docker tag my-app:$(Build.BuildId) <你的ACR名称>.azurecr.io/my-app:latest
  displayName: '构建Docker镜像'

- script: |
    docker login <你的ACR名称>.azurecr.io -u $(ACR_USERNAME) -p $(ACR_PASSWORD)
    docker push <你的ACR名称>.azurecr.io/my-app:latest
  displayName: '推送镜像到Azure容器注册表(ACR)'

注:ACR_USERNAME和ACR_PASSWORD需要在DevOps的流水线变量里配置,避免明文暴露

三、配置CD自动部署流水线

  1. 在DevOps中新建发布流水线,添加空白部署作业
  2. 配置SSH服务连接:关联你的Azure VM的SSH密钥(需提前在VM上配置公钥)
  3. 添加SSH任务,执行以下部署命令:
    # 停止并清理旧容器
    docker stop my-app-container || true
    docker rm my-app-container || true
    
    # 登录ACR并拉取最新镜像
    docker login <你的ACR名称>.azurecr.io -u $(ACR_USERNAME) -p $(ACR_PASSWORD)
    docker pull <你的ACR名称>.azurecr.io/my-app:latest
    
    # 启动新容器(根据你的应用端口调整映射)
    docker run -d -p 80:80 --name my-app-container <你的ACR名称>.azurecr.io/my-app:latest
    

四、常见问题排查

  • Docker远程连接失败:检查Azure防火墙规则是否生效、VM本地防火墙是否放行2375端口、Docker daemon配置是否重启生效
  • 镜像拉取失败:核对ACR的用户名/密码、镜像标签是否与CI流水线一致、ACR是否允许VM所在网络访问
  • 容器启动异常:执行docker logs my-app-container查看日志,排查端口冲突、应用配置错误等问题

内容的提问来源于stack exchange,提问作者l.diazborg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 22:03:25