It doesn’t look relatd to registry versions. The error message appears when the docker login command depends on “pass” to store the credentials. That can be set in the docker client settings in $HOME/.docker/config.json. If “credsStore” is pass and you don’t have “pass” installed or its path is not available in $PATH, you will get that error message.
I used your files (thank youf or shating your config to reproduce the issue) and it worked for me until I deleted /usr/bin/pass.
I understand that you wrote it worked before, but something must have happaned that changed your setting or you didn’t remember that you did something differently compared to what you did before. I tried this with Docker CE 29.1..2 and then with 29.1.3 after an upgrade.
I feel there should be no required configuration except not configuring “pass” as credential store. I understand your situation that it looks like it is caused by the registry, but you would have the same issue with other registries, including Docker Hub, unless the password is already added to the config.json.
I wanted to show you what exactly I did and that there is nothing different, and I got the error message. So I tried to figure out why and it feels like a client bug. The login worked for me when I tested it first, because I started the testing with a renamed “pass” binary, so Dcoker couldn’t find it. It logged in and the plain text password was added to the config json. Next time the password was read from it when I restored the original “pass” binary.
It looks like the Docker client detects /usr/bin/pass and also /usr/local/bin/docker-credential-pass. When both are available, it automatically wants to use “pass”. I tried to change it by setting "credsStore": "" in the config json, but didn’t help. Then I tried the “credHelpers” config.
{
"credHelpers": {
"127.0.0.1:5000": ""
}
}
Then it worked. The “credHelpers” parameter can set a credential helper for specific registry which than uses a specific credential store. In this case we manually disable using any credential helper. I’m not sure why it is needed, but you can use it as a workaround..
I’m surprised you couldn’t login with pass set as credsStore as explained in my previous post.
Because once setup that way, it worked perfectly fine. The only trap I encountered is when I tried to import an existing private GPG key from another computer to be used with pass init; I discovered later on that I had to import its owner trus( as well to be able to use it in this setup.
Bottom line,
it is now required to initialize $HOME/.docker/config.json to be able to login with the latest docker binaries
it is possible to docker login with pass as credsStore as long as it is initialized first with a trusted GPG key.
you showed that it can also be initialized using a specific setting for credHelpers.
the latest registry 3.0 is not linked to this issue
I don’t think I wrote that. I am sorry if I was confusing. I had no problem with logging in with pass, I just explained that it should not be required. The only thing I could not do first is disabling pass when the binaries were on my system. Everything I wrote in my previous post was do demonstrate that and how I eventually found out the right config to disable that.
Of course, if you wan to use pass, thats okay. If it causes any trouble to you in the future, I hope my previous post can still help.