为什么 Linux Docker 从私有 gcr.io 下载文件失败?

为什么 Linux Docker 从私有 gcr.io 下载文件失败?

问题

所以...我测试了许多不同的命令,除了

docker pull gcr.io/...

它总是说我没有足够的权限:

错误:未经授权:您没有执行此操作所需的权限,并且您的凭据可能无效。要验证您的请求,请按照以下步骤操作:https://cloud.google.com/container-registry/docs/advanced-authentication

为什么会这样呢?

我 100% 确定我已正确登录 Google Cloud,因为我可以运行kubectl ...需要完全相同授权的命令。

我的环境

主持人

我正在 amd64 上运行 Linux Ubuntu(此时为 22.04)。

客人

由于各种原因,我需要在该机器上运行虚拟机。所以我安装了另一个 Ubuntu 22.04,它在 VirtualBox VM 中运行。如上所述,一切都运行得很好。

码头工人

此时,docker安装为snap20版本。

笔记:我无法使用默认的 apt-get 软件包,因为这些软件包没有更新,因此它非常旧。

失败的命令类似于:

docker pull gcr.io/<path>/<to>/<file>:main-123456

答案1

这里有几个问题:

快照码头工人

dockerin的版本snap受 保护apparmor

身份验证失败,因为需要从以句点开头的子目录中读取文件(可能是多个?)(例如.docker/...,尽管该文件已在 中授权apparmor)。

正如问题中提到的,旧版本不会削减它。所以我们只剩下新的Docker 桌面版本代替。

Docker 桌面

(请参阅下面有关安装、启动和使用的注释)

Docker Desktop 是一个新的野兽。它具有更多的安全功能,在某种程度上这很好,但它很烦人,因为这意味着使用更多的资源。具体来说,它使用您的计算机 VM 功能来运行 docker。这是隔离可以以 root 身份运行的环境的好方法。

这就是你遇到另一个问题的地方!如果您已经在虚拟机中运行,那么来宾很可能无法自行创建嵌套的虚拟机。除非您确保授权虚拟机创建嵌套虚拟机,否则这将会失败。 VirtualBox 中有一个专门用于此目的的选项,您可以在界面中进行调整。

这是一个屏幕截图,显示默认值(即未授权!)请确保启用 Nester VT-x/AMD-V标志被选中。如果未选中,您必须关闭虚拟机,选中该框,然后重新启动虚拟机。

在此输入图像描述


额外说明

移除按扣

首先,您需要移除按扣。这是使用以下方法完成的:

snap remove docker

警告:Docker 将对您现有的容器和镜像进行完整备份,以防您在重新安装 Docker 时想要恢复它们。这可能需要很长时间,因为大多数容器都是非常大的文件。我建议您先花点时间删除这些:

$ docker ps -a
$ docker rm <container-id>
$ ...repeat until `docker ps -a` returns an empty list...
$ docker images
$ docker rmi <image-id>
$ ...repeat until `docker images` returns an empty list...

笔记:您可能需要使用--force删除某些图像。既然我们要摆脱一切,显然安全的

安装桌面 Docker

我假设您可以自己安装此版本。 Ubuntu 的说明可以在这里找到:

https://docs.docker.com/desktop/install/ubuntu/#install-docker-desktop

笔记:与普通 PPA 相反,他们的 PPA 不允许您直接安装.deb.相反,您必须“手动”下载 .deb 并安装它。然后它会收集所有必要的依赖项等。如果你问我的话,这很奇怪。

启用/启动

安装后,您就可以启动它。就我而言,我使用了以下内容:

$ systemctl --user enable docker-desktop
$ systemctl --user start docker-desktop

第一次不行,多试几次……

用户泊坞窗

一旦桌面窗口打开并且没有用旋转轮说“启动 Docker”,Docker 就会启动并运行,然后您可以在 shell 中键入命令:

docker pull gcr.io/<path>

预计这会像魅力一样发挥作用。

旁注:该docker-compose命令现在docker compose(没有破折号),因此是 docker 的子命令,而不是单独的工具。

相关内容