我对 IBM Cloud 和代码引擎还很陌生。我正在尝试通过将 docker 容器上传到 IBM Cloud Container Registry 并将其用于代码引擎应用程序来部署名为“project1”的应用程序。
问题是,应用程序创建总是失败并显示此消息(命名空间是 project_namespace):
“修订版“project1-00001”失败并显示消息:无法获取图像“icr.io/project1_namespace/project1”:无法将图像解析为摘要:GET https:/。请参阅https://ibm.biz/BdPKqq; 需要授权。请参阅 https://ibm.biz/BdPKqq。”
或有时这条消息:
“修订版“project1-00001”失败并显示消息:无法获取图像“icr.io/project1_namespace/project1”:无法将图像解析为摘要:GET https://icr.io/oauth/token?scope=repository %!A(MISSING)project1_namespace%!F(MISSING)project1%!A(MISSING)pull&service=registry: UNAUTHORIZED: Authorization required. See https://ibm.biz/BdPKqq; Authorization required. See https: //ibm.biz/BdPKqq。”
我不明白为什么身份验证会在这里失败。这是我的工作:
ibmcloud login
ibmcloud cr login
docker build -t $DOCKER_IMAGE_NAME $DOCKERFILE_PATH
ibmcloud target -g $RESOURCE_GROUP_NAME
ibmcloud cr namespace-add $REGISTRY_NAMESPACE
ibmcloud ce project create --name project1
ibmcloud ce project select -n project1
docker tag $DOCKER_IMAGE_NAME icr.io/$REGISTRY_NAMESPACE/${DOCKER_IMAGE_NAME}:latest
docker push icr.io/$REGISTRY_NAMESPACE/${DOCKER_IMAGE_NAME}:latest
ibmcloud ce app create --name $CODE_ENGINE_APP_NAME --image icr.io/$REGISTRY_NAMESPACE/$DOCKER_IMAGE_NAME
代码引擎应用程序应该成功拉取 icr.io 图像。对吧?
IBM Cloud Code Engine 本身需要访问 Container Registry、您的命名空间和存储的容器镜像。在您的命令中,您显示您首先登录 (
cr login
),然后访问容器注册表以添加命名空间并推送图像。这是您的私有注册表,其中的容器仅对具有访问权限的人可见。
Code Engine 无权访问 Container Registry,除非您授予它。这就是为什么您需要create an access secret.
我认为你需要在你的代码引擎项目中创建一个
registry access secret
project1
。以下是一些有用的链接: