我如何知道我是否从脚本login到私有Dockerregistry?

我如何判断我是否从脚本login到私人Dockerregistry服务器? 换句话说, docker login some.registry.com已成功运行?

注意:我问的是一个任意的私人registry,而不是docker.ioregistry。

如果.dockerlogin工作,你会在你的主目录( ~/.docker/ )上find一个.docker文件夹,里面有一个config.json文件。

否则你会得到一个错误login。

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

如果你这样做

docker pull myregistry.com/myimage:tag

docker工人会看看你是否login,如果没有,将检查你是否有registrymyregistry.com的凭据,并与这些login。

如果没有,你会得到一个权限错误

这有点不好,但对大多数情况下,

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

基本上,你search~/.docker/config.json是否有“my.private.registry.com”的logging。 但是,如果会话过期,则此检查将无法捕获。

当你这样做的时候

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

命令从你的terminal,你将有一个回应:(存储在$?)

 0 Login Succeeded 

如果你成功了。

在你的shell脚本中,你可以看看你正在收到的响应,如果它不等于0,那么你没有login。

 sudo docker login <registry> -u <uname> -p <password> if [ $? -ne 0 ]; then echo Login failed! else echo Login OK! fi