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

使用Docker Compose部署至Azure遇InaccessibleImage错误的解决步骤

解决Azure部署Docker应用时的InaccessibleImage错误

问题背景

此前使用以下Compose文件将应用部署至远程主机完全正常,但部署到Azure时,出现镜像无法访问的错误。

原Docker Compose文件

version: '3.8'
volumes:
  //volumes      
networks:
  pnet:   
services:
  // other services i.e. mysql etc.         
  app:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: container-app
    restart: always 
    image: app-image
    ports:
      - 5000:5000 
    networks:
      - pnet   

原Dockerfile内容

FROM node:16-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install 
COPY . .
EXPOSE 5000
CMD [ "npm", "start" ]

遇到的错误

containerinstance.ContainerGroupsClient#CreateOrUpdate: Failure sending request: StatusCode=400 -- Original Error: Code="InaccessibleImage" Message="The image 'app-image' in container group 'app_api' is not accessible. Please check the image and registry credential.

解决步骤

错误核心原因是Azure容器实例(ACI)无法访问你本地构建的app-image镜像——ACI只能拉取公开容器注册表或私有注册表(如Azure容器注册表ACR)中的镜像,无法直接读取本地主机的镜像。需按以下步骤操作:

  • 推送镜像到Azure容器注册表(ACR)

    1. 若还没有ACR,先创建一个:
      az acr create --resource-group <你的资源组名称> --name <ACR注册表名称> --sku Basic
      
    2. 登录到你的ACR:
      az acr login --name <ACR注册表名称>
      
    3. 给本地镜像打符合ACR格式的标签:
      docker tag app-image <ACR注册表名称>.azurecr.io/app-image:latest
      
    4. 推送镜像到ACR:
      docker push <ACR注册表名称>.azurecr.io/app-image:latest
      
  • 修改Docker Compose文件适配ACI规则

    1. 更新镜像地址为ACR中的镜像路径:
      将image: app-image替换为image: <ACR注册表名称>.azurecr.io/app-image:latest
    2. 移除ACI不支持的配置项:
      • 删除自定义网络pnet的所有相关配置(ACI容器默认处于同一网络组,无需自定义)
      • 删除container_name: container-app(ACI不允许指定容器名称)
      • 将restart: always替换为ACI支持的restart_policy: always
      • 清理或替换volumes部分(本地卷无法在ACI使用,可改为Azure文件共享或直接移除)
    3. 若ACR是私有注册表,添加访问凭证:
      在app服务节点下添加凭证配置:
      credentials:
        server: <ACR注册表名称>.azurecr.io
        username: <ACR用户名>
        # 可通过`az acr credential show --name <ACR注册表名称>`获取用户名和密码
        password: <ACR密码>
      
  • 重新执行部署
    确保Docker上下文已切换到Azure环境,然后运行部署命令:

    docker compose up
    

内容的提问来源于stack exchange,提问作者dark

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 06:14:53