Docker build / docker compose up 错误:未知 desc = 无法获取匿名令牌:意外状态:401 未经授权

Ben*_*rth 18 docker nvidia-docker

使用 NVIDIA 容器构建容器(通过 docker build、docker run 或 docker-compose)时,我收到以下错误,有些随机。当我通常开始构建容器时,它第一次就可以工作。但接下来的几次通常都不起作用。

\n
------\n > [internal] load metadata for nvcr.io/nvidia/l4t-base:r32.5.0:\n------\nfailed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: \n  failed to create LLB definition: failed to authorize: \n  rpc error: code = Unknown desc = failed to fetch anonymous token: unexpected status: 401 Unauthorized\n
Run Code Online (Sandbox Code Playgroud)\n

我当前的解决方法是暂时使用稍微不同的图像,同时 I\xe2\x80\x99m 调整 Dockerfile 的其他部分。

\n

Ben*_*rth 32

你必须docker login nvcr.io

其中大部分内容都记录在设置文档中,不幸的nvcr.io是没有很好的 SEO 或 UX,因此搜索结果和大多数尝试都不会显示此页面。令人困惑的是,这与ngc Catalog /不同docker login ngc.nvidia.com。

  • 安装 NGC CLI:(适用于 macOS)
    • 跑步 curl -O https://ngc.nvidia.com/downloads/ngccli_mac.zip && unzip ngccli_mac.zip && chmod u+x ngc
    • mv ngc /usr/local/bin/ngc
  • 设置您的环境:
  • 观察包含正确身份验证详细信息的 docker CLI 输出:
[auth] nvidia/tensorrt:pull,push token for nvcr.io
Run Code Online (Sandbox Code Playgroud)

尖端

确保您登录到正确的容器注册表。它位于您正在使用的 docker 映像的名称中。例如 nvcr.io/nvidia/tensorrt:22.01-py3使用nvcr.io.

解释

事后看来,我明白了failed to fetch anonymous token: unexpected status: 401 Unauthorized。我没有经过身份验证(或者更正确地说,我是通过 Docker Hub 和 NGC Catalog 而不是nvcr.io进行身份验证的)。它给了我一个匿名令牌,它达到了速率限制。我需要创建一个帐户才能获得更高的限额。


voz*_*man 9

重启docker服务器解决了问题

sudo systemctl restart docker
Run Code Online (Sandbox Code Playgroud)