首页 > 解决方案 > 将 Docker 映像从 Azure 容器注册表部署到 Web 应用容器“无法注册层:处理 tar 文件时出错(退出状态 1)”

问题描述

我已经尝试过最新的 Ubuntu 和 Python——它们成功地提取和挂载。但是,一旦我安装更多依赖项并添加我的应用程序并将图像推送到 Azure ACR - 就会发生此错误。

我的本地机器上发生了什么?例如,我运行 Ubuntu 映像,例如安装 pip3,并在本地“docker commit”更改,然后标记映像并将其推送到 ACR。然后,此图像将无法加载并出现上述错误。我可以看到之前图像中的片段已经在注册表中,并且实际上只推送了最新的图像片段。因此,图像的最新更改似乎会发生错误。

完整的错误信息是:-

2020-06-25T03:14:43.517Z 错误 - 注册层失败:处理 tar 文件时出错(退出状态 1):容器 ID 197609 无法映射到主机 IDErr:0,消息:注册层失败:处理 tar 时出错文件(退出状态 1):容器 ID 197609 无法映射到主机 ID

2020-06-25T03:14:43.589Z 信息 - 拉取图像失败,所用时间:0 分 46 秒

2020-06-25T03:14:43.590Z 错误 - 拉取 docker 映像 *******.azurecr.io/seistech-1:v1.0.0.15 失败:

2020-06-25T03:14:43.590Z 信息 - 从 Docker 中心拉取图像:.azurecr.io/seistech-1:v1.0.0.15 2020-06-25T03:14:43.987Z 错误 - DockerApiException:Docker API 响应status code=InternalServerError, response={"message":"Get https: //.azurecr.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,因为它在启动期间失败。

注意 re' 身份验证消息 - 我已经在 Web 应用程序中创建了系统分配的身份,并在 ACR 中分配了图像提取权限 - 据我所知,应该没有身份验证问题。

建议赞赏 - 很少有诊断信息可以使用。

谢谢安迪,新西兰

标签: linuxazurecontainers

解决方案


出于某种原因,我花了几天时间才找到这个文档页面

容器错误日志中的关键信息是:

...container id xxxxxx cannot be mapped...

找到这些项目的 shell 脚本是这样的:

$ find / \( -uid 1000000 \)  -ls 2>/dev/null

1000000错误消息中的高 ID 在哪里)

然后解决方案很简单,在我的 docker-compose Dockerfile 的最后一步中,我添加了:

&& chown -R root:root /home

这是 find 命令显示所有有问题的文件所在的位置 - 它们是由tar -x操作创建的。我还没有进一步研究这是否会导致权限问题。


推荐阅读