Azure DevOps 10MB安全文件限制下第三方Docker镜像集成方案咨询
解决方案:Azure DevOps流水线集成大体积第三方Docker镜像
方案1:将镜像上传至Azure容器注册表(ACR)
这是最直接的落地方式,把本地的第三方镜像推到ACR后,流水线直接拉取使用:
- 本地先加载镜像:
docker load --input .\3rdParty_file_name.tar - 给镜像打上ACR专属标签:
docker tag [本地镜像名:标签] [你的ACR名称].azurecr.io/[镜像名:标签] - 登录你的ACR实例:
az acr login --name [你的ACR名称] - 推送镜像到ACR:
docker push [你的ACR名称].azurecr.io/[镜像名:标签] - 在Azure DevOps流水线中配置:
- 添加
Docker任务或Azure CLI任务,通过服务连接完成ACR登录授权 - 在Dockerfile中直接使用
FROM [你的ACR名称].azurecr.io/[镜像名:标签],或者执行docker pull拉取镜像后再进行后续操作
- 添加
方案2:将tar包存储到Azure Blob Storage,流水线下载后加载
如果不想将镜像推送到容器仓库,可把tar包存到Blob存储,流水线内下载后再加载:
- 登录Azure Portal,创建存储账户及私有Blob容器
- 用Azure Storage Explorer或AzCopy工具将
3rdParty_file_name.tar上传到目标Blob容器 - 生成具备下载权限的SAS令牌(设置合理过期时间),或配置流水线使用服务 principal访问存储账户
- 在Azure DevOps流水线中添加步骤:
- 用
Azure CLI任务下载tar包:az storage blob download --account-name [存储账户名] --container-name [容器名] --name 3rdParty_file_name.tar --file $(Build.SourcesDirectory)/3rdParty_file_name.tar --sas-token "[SAS令牌]" - 执行加载命令:
docker load --input $(Build.SourcesDirectory)/3rdParty_file_name.tar
- 用
方案3:拆分镜像(仅当镜像支持拆分时可选)
若镜像可拆分为多个小于10MB的文件,可拆分后上传至Secure Files,流水线内合并再加载:
- 本地拆分镜像:
docker save [镜像名:标签] | split -b 9m - 3rdParty_file_name.tar.part- - 将所有拆分后的
.part-*文件上传到Azure DevOps Secure Files - 流水线内操作:
- 将所有拆分文件下载至同一目录
- 合并文件:
cat 3rdParty_file_name.tar.part-* > 3rdParty_file_name.tar - 执行加载命令:
docker load --input 3rdParty_file_name.tar
内容的提问来源于stack exchange,提问作者iusmar
相关产品推荐
相关产品推荐

