当我使用docker 对私有存储库执行docker login时,docker 会记住对应 registry的登陆用户名,在$HOME/.docker/config.json文件中创建一个条目,方便下次登陆。

Docker利用docker login命令来校验用户镜像仓库的登录凭证,实际并不是真正意义上的登录(Web Login),仅仅是一种登录凭证的试探校验,如果用户名密码正确,Docker则会把用户名、密码 以及仓库域名等信息进行base64编码保存在docker的配置文件中。

 

关于登录凭证覆盖问题

 

# docker login --help

 

 

# docker login 192.168.1.102:2019 -u admin -p admin123

# echo "admin123" | docker login 192.168.1.102:2019 -u admin --password-stdin

# cat /root/.docker/config.json

 

# docker login 192.168.1.102:2019 -u test -p Test@123

# echo "Test@123" | docker login 192.168.1.102:2019 -u test --password-stdin

# cat /root/.docker/config.json

 

# echo "YWRtaW46YWRtaW4xMjM=" | base64 --decode

# echo "dGVzdDpUZXN0QDEyMw==" | base64 --decode

 

 

 

从config.json数据结构可知,Docker针对每一个镜像仓库,只会保存最近一次有效的用户名密码,之后执行docker login 会直接使用config.json中对应域名的用户名密码进行登录。 当处理完毕之后,可以执行docker logout 将指定仓库的用户登录凭证从config.json中删除。

当你用不同的用户名密码,登录的是同一个仓库地址时,后面的登录凭证,会覆盖前面的登录凭证,显然有时会给我们应用造成一定困扰!

怎么才能不让其覆盖,同时保留对同一个仓库的几个不同用户名密码的登录凭证呢?

将登录凭证,保存在$HOME/.docker/config.json文件中,重启docker,然后不再重新登录,否则又会被覆盖重新生成!

 

# cat  /root/.docker/config.json  

################################################

{

        "auths": {

                "192.168.1.102:2019": {

                        "auth": "YWRtaW46YWRtaW4xMjM="

                },

                "192.168.1.102:2019": {

                        "auth": "dGVzdDpUZXN0QDEyMw=="

                }

        },

        "HttpHeaders": {

                "User-Agent": "Docker-Client/18.06.0-ce (linux)"

        }

}

################################################

 

# systemctl restart docler 

 

 

关于Docker Login登录凭证安全存储

 

docker login fails on a server with no X11 installed

https://stackoverflow.com/questions/51222996/docker-login-fails-on-a-server-with-no-x11-installed

 

docker - docker-credential-secretservice on CentOS

https://stackoverflow.com/questions/55309743/docker-docker-credential-secretservice-on-rhel

 

关于 docker login harbor

https://jiakui.app/2019/10/14/docker-login

 

How to generate a new auth in the config.json file

https://success.docker.com/article/generate-new-auth-in-config-json-file

 

Docker Login登录凭证安全存储

https://youendless.com/post/docker_login_pass

 

您的 DOCKER LOGIN 密碼加密沒?

https://blog.kkbruce.net/2019/01/docker-loing-password-unencrypted.html#.XgwKb3ZiqvY

 

Credentials store in docker client

https://dockerdevops.blogspot.com/2019/05/credentials-store.html

 

docker/docker-credential-helpers

https://github.com/docker/docker-credential-helpers/releases

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐