others - 如何判断我是否从脚本登录到私有Docker注册?

我怎么知道我从脚本登录到了私有Docker注册服务器?

注意:我询问的是任意的私有注册,而不是docker.io注册。

时间:

如果Docker登录成功,你将在主目录(~/.docker/ )中找到.docker文件夹,其中带有一个带有凭证的config.json文件。

否则,你将获得一个错误登录。

注意:Docker通过查看注册名称来确定要使用的凭据:

如果你做

docker pull myregistry.com/myimage:tag

Docker将查看你是否登录,如果没有检查你是否拥有注册myregistry.com和登录的凭据。

如果没有,将获得权限错误

这有点牵强,但是,在大多数情况下它都适用于我:


if ! grep -q "my.private.registry.com" ~/.docker/config.json ; then


 docker login "my.private.registry.com"


fi



基本上,如果在~/.docker/config.json中有一个"my.private.registry.com"记录,你会搜索,但是,如果会话过期,此检查将无法捕获它。

这是一个小玩意,我想直到Docker有一个命令检查登录,不会有任何好的解决方案,
你可以在bash脚本中尝试登录x秒,如果没有登录命令,则会尝试提示用户名,如果您确实已登录,它将使用保存凭据再次登录,并继续状态0,


#!/bin/bash


timeout -s SIGKILL 3s docker login some.registry.com >/dev/null 2>&1


if [ $? -eq 0 ]


then


 echo Logged In!


else


 echo Not logged in...


fi



当你这样做的时候


Docker login <private registry> -u <user> -p <password> 



你的终端命令,你将得到响应: (存储在$?)中


0


Login Succeeded



如果你成功了。

你可以在shell script中查看所接收的响应,如果它不等于0,则无法登录。


sudo docker login <registry> -u <uname> -p <password>


if [ $? -ne 0 ]; then


 echo Login failed!


else


 echo Login OK!


fi



...