如何让 Docker for Windows 生成明文身份验证密钥以访问 Docker Hub 上的私有映像?

Cas*_*sey 5 docker docker-for-windows

Amazon Elastic Beanstalk 需要来自 Docker 的明文密钥才能访问 Docker Hub 上的私有映像。根据 AEB 上的说明,您只需运行docker login以在“%UserProfile%/.docker/config.json”中生成这些凭据。但是,这会生成以下文件:

{
    "auths": {
        "https://index.docker.io/v1/": {}
    },
    "HttpHeaders": {
        "User-Agent": "Docker-Client/17.12.0-ce (windows)"
    },
    "credsStore": "wincred"
}
Run Code Online (Sandbox Code Playgroud)

凭据存储在 Windows 凭据管理器“wincred”中。

我如何改为强制在 config.json 文件中临时生成凭据?

Cas*_*sey 5

  1. 从“%UserProfile%/.docker/config.json”文件中删除最后一行:

(不要忘记删除尾随的 ',')

{
    "auths": {
        "https://index.docker.io/v1/": {}
    },
    "HttpHeaders": {
        "User-Agent": "Docker-Client/17.12.0-ce (windows)"
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 保存 config.json 文件。
  2. 运行docker login

如果您查看 config.json 文件,您现在将找到您需要的内容。据我所知,这些凭据应该一直有效,直到您的用户名或密码更改(您可以看到为什么在凭据管理器中拥有这些凭据是好的!)。

复制出 auth 密钥后,您需要将 config.json 文件恢复到其原始状态:

{
    "auths": {
        "https://index.docker.io/v1/": {}
    },
    "HttpHeaders": {
        "User-Agent": "Docker-Client/17.12.0-ce (windows)"
    },
    "credsStore": "wincred"
}
Run Code Online (Sandbox Code Playgroud)

然后docker login再次运行以将事情恢复到原来的状态。