我已经尝试了最新的Ubuntu和Python-他们成功地提取和装载。但是,只要我安装进一步的依赖项,添加我的应用程序,并将映像推送到Azure ACR-这个错误发生。
我的本地机器上发生了什么?例如,我运行Ubuntu映像,例如,我安装了PIP3,并在本地"Docker提交"更改,然后标记图像并将其推到ACR。然后这个图像将无法加载,并出现上述错误。我可以看到前一个图像中的段已经在注册表中,实际上只推了最新的图像段。因此,错误似乎是在对映像进行最新更改时发生的。
完整的错误消息是:-
2020 - 06 - 25T03:14:43.517Z错误-无法注册层:处理tar文件时出错(退出状态1):容器ID 197609无法Map到主机IDErr:0,消息:无法注册层:处理tar文件时出错(退出状态1):容器ID 197609无法Map到主机ID
2020 - 06 - 25T03:14:43.589Z信息-提取图像失败,所用时间:0分46秒
2020年6月25日T03:14:43.590Z错误-提取码头图像*******. azurecr.io/seisetech-1:v1.0.0.15失败:
2020 - 06 - 25T03:14:43.590Z信息-从Docker集线器中提取图像:***. azurecr. io/地震技术-1:v1.0.0.15 2020年6月25日03:14:43.987Z错误-对接器应用程序异常:Docker API已响应,状态代码= InternalServerError,响应={"消息":"获取https://. azurec.io/v2/-1/manifests/v1.0.0.15:未经授权:需要身份验证,请访问https://aka.ms/acr/authorization以获取详细信息。"}
2020 - 06 - 25T03:14:44.020Z错误-图像提取失败:验证Docker映像配置和凭据(如果使用专用存储库)
2020 - 06 - 25T03:14:46.491Z信息-正在停止站点***-dev-container,因为它在启动期间失败。
请注意重新验证消息-我已经在Web应用程序中创建了系统分配的身份,并在ACR中分配了图像拉取权限-因此,据我所知,应该没有验证问题。
建议赞赏-很少的诊断信息工作。
谢谢Andy,新西兰
3条答案
按热度按时间ej83mcc01#
托管身份不能作为从ACR部署Docker映像的身份验证。您必须设置环境,例如:
这是从私有注册表中拉取映像的唯一方法,对于ACR也是如此。托管标识只在Web App运行时起作用,但拉取映像在它之前。
ev7lccsx2#
出于某种原因,我花了几天时间才找到这个documentation page
容器错误日志中的关键信息如下:
查找这些项目的shell脚本如下所示:
(其中
1000000
是错误消息中的上限ID)解决方案很简单,在我的Docker组合Dockerfile的最后一步,我添加:
这就是find命令显示所有有问题的文件的地方-它们是由
tar -x
操作创建的。我还没有深入研究这是否导致了权限问题。aiazj4mn3#
在我的案例中,它与
npm v9
相关,并且仅在使用***Azure应用程序服务***时相关。可能会将模块安装到node_modules目录中,并使用文件所有者/创建者的高ID。
我的解决方案:
作为一个快速的解决方案,我恢复到了旧版本的npm
8.x
,这在当时对我很有效。发现本文对NPM特有的导致用户重新Map异常的问题很有帮助