我看到它~/.dockercfg有您的登录凭据,但它是您的电子邮件,而不是您的用户名.我看到运行docker login显示您的用户名并提示您更改它.但是,您可以将用户名添加到构建脚本中吗?
Bru*_*sky 16
似乎docker info不再包含用户名。相反,我学会了通过 来从凭证存储中提取它jq。我没有在每个 上都尝试过这个credStore,但对于我在 macOS 和 Linux 上检查过的那些,这是有效的。
# line breaks added for readability; this also works as a oneliner
docker-credential-$(
jq -r .credsStore ~/.docker/config.json
) list | jq -r '
. |
to_entries[] |
select(
.key |
contains("docker.io")
) |
last(.value)
'
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我选择了 docker-credential-desktop,但它应该适用于任何。您可以从 Docker 配置中提取凭证助手,就像我在前面的代码块中所做的那样。
docker-credential-desktop list | \
jq -r 'to_entries[].key' | \
while read; do
docker-credential-desktop get <<<"$REPLY";
done
Run Code Online (Sandbox Code Playgroud)
Kev*_*ell 10
显示用户名:
docker info | sed '/Username:/!d;s/.* //'
Run Code Online (Sandbox Code Playgroud)
将其存储在变量中:
username=$(docker info | sed '/Username:/!d;s/.* //');
echo $username
Run Code Online (Sandbox Code Playgroud)
请注意,如果你有bash history expansion(set +H),你将无法在命令替换中加上双引号(例如,"$(cmd...)"因为!你的上一个命令被替换.使用这些嵌套扩展进行转义是非常棘手的,如上所示使用它不加引号更具可读性和工作.
| 归档时间: |
|
| 查看次数: |
8010 次 |
| 最近记录: |