升级了函数计算FC3.0,在deploy 时候不push docker image,如何解决?

升级了函数计算FC3.0,在deploy 时候不push docker image,如何解决?查询文档无果。麻烦给指点下如何设置。报错内容如下:
Error Message:
InvalidArgument: code: 400, failed to optimization image due to: Image not stored in ACR is not supported yet, please make sure specified image exists in any your ACR repository or
it's valid: acrRequestId: , ErrorMessage: {"code":"IMAGE_NOT_EXIST","message":"repo image is not exist."}; imageName=registry.cn-beijing.aliyuncs.com/ai_services/ai-base:fc-face-verification-v1 request id: 1-660a4253-137c40b1-ae82d527f1d7

展开
收起
三分钟热度的鱼 2024-04-10 17:37:52 53 发布于安徽 分享
分享
版权
举报
阿里云 AI 助理回答

根据您提供的报错信息和知识库资料,问题的核心在于函数计算FC3.0在部署时要求容器镜像必须存储在阿里云容器镜像服务(ACR)中。如果镜像未推送到ACR仓库,部署会失败并返回类似IMAGE_NOT_EXIST的错误。以下是解决该问题的详细步骤:


问题分析

  1. 错误原因

    • 报错信息明确指出:Image not stored in ACR is not supported yet,即函数计算FC3.0目前仅支持从ACR拉取镜像。
    • 您的镜像registry.cn-beijing.aliyuncs.com/ai_services/ai-base:fc-face-verification-v1未正确存储在ACR中,或者镜像名称、标签有误。
  2. 限制说明

    • 函数计算FC3.0的自定义容器运行时要求镜像必须存储在ACR中,无法直接使用本地或其他非ACR来源的镜像。

解决方案

步骤 1:确认镜像是否已推送到ACR

  1. 登录阿里云容器镜像服务控制台,检查目标命名空间和镜像仓库是否存在。
  2. 确认镜像registry.cn-beijing.aliyuncs.com/ai_services/ai-base:fc-face-verification-v1是否已成功推送至ACR。
    • 如果镜像不存在,请按照以下步骤构建并推送镜像。

步骤 2:构建并推送镜像到ACR

  1. 登录ACR
    使用以下命令登录ACR:

    docker login --username=<您的ACR用户名> registry.cn-beijing.aliyuncs.com
    
    • <您的ACR用户名>通常为阿里云账号的RAM用户或主账号名称。
  2. 构建镜像
    在项目根目录下执行以下命令构建镜像:

    IMAGE_NAME=registry.cn-beijing.aliyuncs.com/ai_services/ai-base:fc-face-verification-v1
    docker build -t $IMAGE_NAME .
    
  3. 推送镜像
    构建完成后,将镜像推送到ACR:

    docker push $IMAGE_NAME
    
  4. 验证镜像
    推送完成后,再次登录ACR控制台,确认镜像已成功上传。

步骤 3:配置函数计算使用ACR镜像

  1. 创建函数
    在函数计算控制台中创建函数时,选择容器镜像方式,并完成以下配置:

    • 镜像选择方式:选择使用 ACR 中的镜像
    • 容器镜像:单击下方的选择 ACR 中的镜像,然后在弹出的面板中选择刚刚推送的镜像registry.cn-beijing.aliyuncs.com/ai_services/ai-base:fc-face-verification-v1
    • 监听端口:设置为镜像中定义的HTTP Server监听端口(如9000)。
    • 高级配置
      • 是否使用GPU:根据需求选择是否启用GPU。
      • 规格方案:根据镜像的资源需求设置vCPU、内存和GPU显存规格。
  2. 更新函数(如已有函数)
    如果您需要更新现有函数的镜像配置,可以使用UpdateFunction接口:

    • 请求语法:
      PUT /2023-03-30/functions/{functionName} HTTP/1.1
      
    • 请求参数:
      • functionName:目标函数名称。
      • body:包含customContainerConfig字段,指定新的镜像地址。

    示例请求体:

    {
     "customContainerConfig": {
       "image": "registry.cn-beijing.aliyuncs.com/ai_services/ai-base:fc-face-verification-v1",
       "port": 9000
     }
    }
    

步骤 4:验证部署

  1. 部署完成后,在函数计算控制台中测试函数是否正常运行。
  2. 如果仍有问题,检查日志以定位具体错误。可以通过函数计算控制台的日志查询功能查看详细日志信息。

重要提醒

  • 镜像加速:如果您使用的是ACR企业版镜像仓库,建议开启镜像加速功能以提升拉取速度。
  • 权限配置:确保函数计算服务角色具有访问ACR的权限。如果未配置,可以在RAM控制台为函数计算服务角色添加AliyunContainerRegistryReadOnlyAccess权限。
  • 镜像格式:确保镜像符合Docker标准,并且启动命令和端口配置正确。

通过以上步骤,您可以解决因镜像未存储在ACR而导致的部署失败问题。如果仍有疑问,请提供更多上下文信息以便进一步排查。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

快速交付实现商业价值。

还有其他疑问?
咨询AI助理
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等