How can I tell whether or not I'm logged in to a private Docker registry server from a script? In other words, has docker login some.registry.com
been run successfully?
Note: I'm asking about an arbitrary private registry, not the docker.io
registry.
This is a bit hacky, but it works in most of the cases for me:
Basically, you search if there is a record of "my.private.registry.com" in
~/.docker/config.json
. However, if the session is expired, this check won't catch it.if docker login worked, you will find a
.docker
folder on your home directory (~/.docker/
), with aconfig.json
file with credentials in it.otherwise you would get an error login in.
Note: docker determine what credentials to use by looking at the registry name:
if you do
docker pull myregistry.com/myimage:tag
docker will look if you're logged in, and if not will check if you have the credentials for the registry
myregistry.com
and login with those.If not you will get a permission error
When you do the
command from your terminal, you will have a response: (stored in $?)
if you were successful.
In your shell script, you could just look at the response you're receiving, if it does not equal 0, you've failed to login.