首页 > 其他分享 >【Azure App Service for Container】记一次拉取镜像失败的特殊情况

【Azure App Service for Container】记一次拉取镜像失败的特殊情况

时间:2023-08-30 20:32:57浏览次数:65  
标签:Container Service App 拉取 failed 镜像 docker

问题描述

使用Azure App Service For Container 拉取 应用镜像,发现拉取失败。

错误消息:

“Image pull failed since Inspect image returned null: xxxxxxx.azurecr.cn/dataapi:20230830V2.0”

CreateImageAsync() for xxxxxxx.azurecr.cn/dataapi:20230830V2.0 failed with Ex : DockerApiException: Docker API responded with status code=InternalServerError, response={"message":"Get \"https://xxxxxxx.azurecr.cn/v2/dataapi/manifests/20230830V2.0 \": unauthorized: authentication required, visit https://aka.ms/acr/authorization for more information."}


问题解答

在App Service 的Kudu站点中检查docker日志,发现拉取镜像遇见错误

ERROR - failed to register layer: Error processing tar file(exit status 1): Container ID 1389985163 cannot be mapped to a host ID

这说明容器镜像中使用的UID ‘1389985163’ 超出了App Service 所在虚机允许的 UID范围。因在构建镜像时,使用 docker build --squash 命令构建的 Image 中仍然包含多层 fs layer。该方法无法解决特殊owner uid的问题。

 

解决方法有

方式一: 更改base image避免了引入包含特殊owner uid的文件目录

方式二:通过 docker export / docker import 的方法生成只有一层fs layer的镜像。

docker export container-id -o tarfile

docker import tarfile newimage:version

方式三:使用以下命令更改owner,并使用docker export/docker import  生成新的镜像

RUN find /usr/local/lib/node_modules/ ! -user root | xargs chown root:root

 

 

参考资料

Docker User Namespace remapping issues : https://azureossd.github.io/2022/06/30/Docker-User-Namespace-remapping-issues/index.html#npm-based-projects-causing-userns-remap-exceptions

 


当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

标签:Container,Service,App,拉取,failed,镜像,docker
From: https://blog.51cto.com/u_13773780/7296879

相关文章

  • 软件测试|Mac安装appium报权限问题
    前言appium是我们最常用的app自动化测试工具,基本上每一个自动化测试工程师都需要安装appium环境,我的一位朋友在给自己的新买的Mac电脑安装appium时出现了一个报错,报错指向权限被拒绝,无法下载appium,这是一个很普遍的权限问题,下面就为大家介绍一下解决appium安装时的权限被拒绝的......
  • Close,application.Terminate与halt有什么区别
    当Close是一个主窗体时,程序会退出.Close会发生FormClose事件,FormCloseQuery事件Halt会发生FormDestory事件,Application.Terminate以上三个事件都不会发生Application.Terminate就是程序结束了。整个程序结束运行,系统强行收回系统资源当主窗口关闭时或WM_QUIT消息触发时,Termina......
  • csapp attack lab
     1.思考自己能够做什么->使用手写汇编,gcc,objdump的简单组合得到了指令的机器码2.如何让自己处于一种思维活跃的状态如何使用ret指令?需要将返回地址压回栈中,第一个想到的是使用覆盖的方法,想去寻找上一级调用的地址,但是没有找到参考了别人的方法,用了pushq,这种方法是......
  • uniapp 项目实践总结(二)从零开始搭建一个项目
    导语:本篇文章主要是项目方面的技术开发总结,新建一个项目可以选择使用可视化界面,也可以使用命令行搭建。目录可视化界面命令行搭建安卓开发环境苹果开发环境可视化界面安装软件使用官方推荐的HbuilderX软件,开发方式比较简单,内置相关环境以及终端,无需配置node。下......
  • 【Azure App Service for Linux】NodeJS镜像应用启动失败,遇见 RangeError: Incorrect
    问题描述在AppServiceForLinux中,部署NodeJS应用,应用启动失败。报错信息为:2023-08-29T11:21:36.329731566ZRangeError:Incorrectlocaleinformationprovided2023-08-29T11:21:36.329776866ZatIntl.getCanonicalLocales(<anonymous>)2023-08-29T11:21:36.329783066ZatC......
  • 【Azure App Service for Linux】NodeJS镜像应用启动失败,遇见 RangeError: Incorrect
    问题描述在AppServiceForLinux中,部署NodeJS应用,应用启动失败。报错信息为:2023-08-29T11:21:36.329731566ZRangeError:Incorrectlocaleinformationprovided2023-08-29T11:21:36.329776866ZatIntl.getCanonicalLocales(<anonymous>)2023-08-29T11:21:36.3297830......
  • uniapp APP热更新
    在app.vue的onLaunch生命周期(应用初始化完成触发(只触发一次))请求接口,返回最新版本号,判断当前本地版本号月线上版本号是否一致//请求版本更新号getNewest().then((res)=>{ if(res.code=='200'&&res.data){ letopenUrl=plus.os.name==="......
  • <mvc:annotation-driven>和DefaultAnnotationHandlerMapping
    spring配置拦截器有两种方式: <mvc:annotation-driven/><!--*************openSessionInViewInterceptor*************--><beanid="openSessionInViewInterceptor"class="org.springframework.orm.hibernate3.support.OpenSessionInViewInt......
  • App开放接口API安全性—Token签名sign的设计与实现
    在app开放接口API的设计中,避免不了的就是安全性问题。 一、https协议对于一些敏感的API接口,需要使用https协议。https是在http超文本传输协议加入SSL层,它在网络间通信是加密的,所以需要加密证书。 二、签名设计原理:用户登录后向服务器提供用户认证信息(如账户和密码),服务器认证完后......
  • iOS开发Swift-4-IBAction,group,音乐播放器-木琴App
    1.使用素材创建木琴App的UI。 2.连接IBAction。  其余按钮直接拖拽到play里边。 当鼠标置于1处时2处显示如图,表示成功。当用户按下任一按钮都会触发play中的内容。 3.将7个按钮的View中的Tag值分别调为1、2、3、4、5、6、7. 4.将音频文件拖入项目文件中。 Cr......