如何从 docker-credential-osxkeychain 获取价值

How to get value from docker-credential-osxkeychain

您如何获得凭据

Docker describe 它是从 config.json 获取的,但它在“credsStore”中,您如何从那里获取它?

 cat ~/.docker/config.json
{
    "auths": {
        "https://index.docker.io/v1/": {}
    },
    "credsStore": "desktop",
    "experimental": "enabled",
    "stackOrchestrator": "swarm"
}

使用docker-credential-osxkeychain get <??>

这就像无论我尝试“得到”什么都会得到回报:

docker-credential-osxkeychain <store|get|erase|list|version>

简答

命令 docker-credentials-osxkeychain get 从标准输入读取并期望服务器 url 如所述 here 所以可以做一些类似

的事情
$ echo "https://index.docker.io/v1/" | docker-credential-osxkeychain get

您可以使用 docker-credential-osxkeychain list

找到服务器 url
$ docker-credential-osxkeychain list
{"https://index.docker.io/v1/":"someuser"}

长答案

首先,您可能想将 credsStore 更改为 osxkeychain,这使得 ~/.docker/config.json 看起来像

{
  "stackOrchestrator" : "swarm",
  "credsStore" : "osxkeychain",
  "auths" : {

  },
  "experimental" : "disabled"
}

其次,使用 docker login

使用 docker cli 登录
$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: someuser
Password:
Login Succeeded

成功登录后,docker-credential-osxkeychain 已将用户名和密码存储在 osxkeychain 中,可以使用 docker-credential-osxkeychain get

检索
$ docker-credential-osxkeychain list
{"https://index.docker.io/v1/":"someuser"}

我们可以使用 url 作为密钥来获取我们的凭据 注意:docker-credential-osxkeychain get 使用标准输入读取输入。

$ echo "https://index.docker.io/v1/" | docker-credential-osxkeychain get
{"ServerURL":"https://index.docker.io/v1/","Username":"someuser","Secret":"your-actual-password"}