docker-compose - 如何提供凭据或 API 密钥以便从私有存储库中提取图像?

问题描述

我有一个私人仓库,我在 docker 之外上传图片

image: example-registry.com:4000/test

我在我的 docker-compose 文件中定义了它。 我如何提供凭据或 API 密钥以便从该存储库中提取?是否可以在不执行“docker login”命令的情况下执行此操作,或者需要始终在 docker-compose 命令之前执行这些命令? 我有 API 密钥,我正在使用它来从 PowerShell 或任何其他工具执行 REST API。 我可以以某种方式使用它来避免不断出现“docker login”命令吗?

谢谢

解决方法

docker login 为您创建或更新 ~/.docker/config.json 文件。只有登录部分,它看起来像

{
    "auths": {
        "https://index.docker.io/v1/": {
            "auth": "REDACTED"
        }
    }
}

这个文件里可以有很多东西,here is the doc

所以为了回答你的问题,你可以通过分发这个文件来避免登录命令。类似的东西:

  • 在此处创建专用令牌(您不应多次使用令牌)https://hub.docker.com/settings/security
  • 如果存在,请将当前配置移到别处mv ~/.docker/config.json /tmp
  • 执行docker login -u YOUR-ACCOUNT,使用令牌作为密码
  • 复制生成的 ~/.docker/config.json,然后您可以将其分发到您的服务器。这个文件和你的密码一样是个秘密,不要公开!
  • 移回您当前的配置 mv /tmp/config.json ~/.docker/

将文件作为您分发的机密与输入 docker login 命令并没有太大区别,尤其是在您编写一些脚本来执行此操作的情况下。