Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docker-compose can't handle when docker-credential-osxkeychain is gone #6517

Closed
sixcorners opened this issue Feb 13, 2019 · 25 comments
Closed

Comments

@sixcorners
Copy link

sixcorners commented Feb 13, 2019

Description of the issue

Context information (for bug reports)

Output of docker-compose version

docker-compose version 1.24.0-rc1, build 0f3d4dda
docker-py version: 3.7.0
CPython version: 3.6.6
OpenSSL version: OpenSSL 1.1.0h  27 Mar 2018

Output of docker version

Client: Docker Engine - Community
 Version:           18.09.1
 API version:       1.39
 Go version:        go1.10.6
 Git commit:        4c52b90
 Built:             Wed Jan  9 19:33:12 2019
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.1
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.6
  Git commit:       4c52b90
  Built:            Wed Jan  9 19:41:49 2019
  OS/Arch:          linux/amd64
  Experimental:     true

Output of docker-compose config
(Make sure to add the relevant -f and other flags)

ERROR: 
        Can't find a suitable configuration file in this directory or any
        parent. Are you in the right directory?

        Supported filenames: docker-compose.yml, docker-compose.yaml

Steps to reproduce the issue

  1. Open Docker for Mac preferences

  2. Uncheck "Securely store Docker logins in macOS keychain

  3. docker-compose up

Observed result

traceback

Expected result

containers start running

Stacktrace / full error message

Traceback (most recent call last):
  File "docker-compose", line 6, in <module>
  File "compose/cli/main.py", line 71, in main
  File "compose/cli/main.py", line 127, in perform_command
  File "compose/cli/main.py", line 1085, in up
  File "compose/cli/main.py", line 1081, in up
  File "compose/project.py", line 527, in up
  File "compose/service.py", line 344, in ensure_image_exists
  File "compose/service.py", line 1084, in build
  File "site-packages/docker/api/build.py", line 260, in build
  File "site-packages/docker/api/build.py", line 307, in _set_auth_headers
  File "site-packages/docker/auth.py", line 301, in get_all_credentials
  File "site-packages/docker/auth.py", line 287, in _get_store_instance
  File "site-packages/dockerpycreds/store.py", line 25, in __init__
dockerpycreds.errors.InitializationError: docker-credential-osxkeychain not installed or not available in PATH
[63650] Failed to execute script docker-compose

Additional information

OS version / distribution, docker-compose install method, etc.

@ineffyble
Copy link

I'm getting a similar error with this version on Mac:

Traceback (most recent call last):
  File "site-packages/dockerpycreds/store.py", line 80, in _execute
  File "subprocess.py", line 336, in check_output
  File "subprocess.py", line 418, in run
subprocess.CalledProcessError: Command '['/usr/local/bin/docker-credential-osxkeychain', 'list']' returned non-zero exit status 1.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "docker-compose", line 6, in <module>
  File "compose/cli/main.py", line 71, in main
  File "compose/cli/main.py", line 127, in perform_command
  File "compose/cli/main.py", line 1085, in up
  File "compose/cli/main.py", line 1081, in up
  File "compose/project.py", line 527, in up
  File "compose/service.py", line 360, in ensure_image_exists
  File "compose/service.py", line 1084, in build
  File "site-packages/docker/api/build.py", line 260, in build
  File "site-packages/docker/api/build.py", line 307, in _set_auth_headers
  File "site-packages/docker/auth.py", line 302, in get_all_credentials
  File "site-packages/dockerpycreds/store.py", line 71, in list
  File "site-packages/dockerpycreds/store.py", line 93, in _execute
dockerpycreds.errors.StoreError: Credentials store docker-credential-osxkeychain exited with "The specified item could not be found in the keychain.".

@BretFisher
Copy link

This started happening to me as well with edge 2.0.2.1 (311274) and presents the same regardless of if "securely store docker logins in macOS keychain" is selected. Note that when it's deselected then I don't get the first error @ineffyble gets.

If I log in with dockerID via the Docker Desktop menu GUI, the errors go away and docker-compose works.

If I log back out, it still works without errors, so there's something happening that is "cleared out" by logging out and back in.

@thaJeztah
Copy link
Member

ping @ulyssessouza @chris-crone PTAL

@chris-crone chris-crone added this to the 1.24.0 milestone Feb 25, 2019
@LaurentGoderre
Copy link
Member

I get both of these errors in different context.

When the option Securely store Docker login in macOS keychain I get the OP error. When I enable it back, I get the same error as @ineffyble. When I do docker login the error goes away. When I do docker logout I am back the with the second error. Seems like two related but distinct bugs to me.

@chris-crone
Copy link
Member

chris-crone commented Mar 8, 2019

This might be caused by an issue in Docker Desktop which is storing if it is using the keychain in ~/.docker/config.json with the incorrect key: "credSstore" : "osxkeychain" instead of credsStore.

I've raised this with them and will keep this issue updated.

@chris-crone
Copy link
Member

chris-crone commented Mar 8, 2019

Confirmed that this is the issue. As this is a Desktop issue and not a Compose issue, I will close this. Thank you for reporting it!

EDIT: The Desktop team will fix this for the next release so there's nothing for you to do.

@ssbarnea
Copy link

@chris-crone So bug closed without a fix release or workaround? Is anything we can to to bypass this issue?

@chris-crone
Copy link
Member

@ssbarnea You'll need to edit your CLI config file manually.

If you would like to use the macOS keychain then you need to:

  1. Make sure that you have the option checked in the Docker Desktop preferences
  2. Ensure that your ~/.docker/config.json file contains "credsStore" : "osxkeychain"
  3. Login to the registry that you want to use

If you would not like to use the macOS keychain then you need to:

  1. Make sure that the option is unchecked in the Docker Desktop preferences
  2. Ensure that your ~/.docker/config.json does not contain "credsStore": "osxkeychain"
  3. Login to the registry that you want to use

Let me know if you run into any trouble

@zedtux
Copy link

zedtux commented Jun 17, 2019

From the Docker Desktop icon, I logged in to the Docker (clicking the Sign in / Create Docker ID) and after that I was able to run again the docker commands.

@HuNHuNt3r
Copy link

@ssbarnea You'll need to edit your CLI config file manually.

If you would like to use the macOS keychain then you need to:

  1. Make sure that you have the option checked in the Docker Desktop preferences
  2. Ensure that your ~/.docker/config.json file contains "credsStore" : "osxkeychain"
  3. Login to the registry that you want to use

If you would not like to use the macOS keychain then you need to:

  1. Make sure that the option is unchecked in the Docker Desktop preferences
  2. Ensure that your ~/.docker/config.json does not contain "credsStore": "osxkeychain"
  3. Login to the registry that you want to use

Let me know if you run into any trouble

Thank you! Your post helped me a lot. One addition: I didn't have "credsStore": "osxkeychain", I had "credsStore":"desktop". I had to remove this whole entry and then I could build successfully.

@Fox32
Copy link

Fox32 commented Jul 26, 2019

I had the "credsStore": "osxkeychain" twice in my config.json, after removing one the issue is gone.

@christhomas
Copy link

I also removed the second credsStore value and just replaced it with what @Fox32 has in his comment and it was working again

@thaJeztah
Copy link
Member

Was the second instance of that configuration added automatically? (e.g. after upgrading docker?)

@christhomas
Copy link

Yeah and weird thing, although I didn't really think about it at the time was that the key was "credSstore" and not what I expected "credsStore". The wrong S in the key was capitalised

@Fox32
Copy link

Fox32 commented Aug 3, 2019

Was the second instance of that configuration added automatically? (e.g. after upgrading docker?)

I can't answer that. Maybe there was a Docker for Mac update. But it could also be caused by the Idea Docker plugin. Not sure if it tries to configure it automatically.
But definitly not manually.

@dylanmcreynolds
Copy link

I can confirm that this occurred after an OSX upgrade of Docker to 2.1.0.0 36874. I had 2 credsStore entries and one of them has the capitalized S in the wrong place. After deleting "credsStore":"desktop" and editing so that all I had was "credsStore":"", docker-compose --build worked.

@milewski
Copy link

milewski commented Aug 6, 2019

I had this:

cat ~/.docker/config.json

{"auths":{},"credsStore":"", "credsStore":"desktop","stackOrchestrator":"swarm"}

I updated to this:

{"auths":{},"credsStore":"","stackOrchestrator":"swarm"}

Now docker-compose build is working again :)

@davidpelayo
Copy link

None of the suggestions worked for me. As I pointed out here; the problem occurred to me when upgrading to stable/2.1.0.0.

Please let's find a truly reliable solution for this, instead of patchy workarounds.

@davidpelayo
Copy link

Downgrading is how I made it work.

  1. Close any terminal you had opened.
  2. Delete your previous Docker for Desktop from your system (by simply removing it from your Applications).
  3. Download the latest stable release Docker Community Edition 2.0.0.3 2019-02-15: https://download.docker.com/mac/stable/31259/Docker.dmg.
  4. (Be careful not to delete unwanted info from your config) Initialize your credentials configuration by running: docker-credential-gcr configure-docker

@BlackFoxgamingstudio
Copy link

First login:
docker login

Then try again:
docker-compose up

@fabianomg
Copy link

fabianomg commented Feb 10, 2020

and just delete the files in the folder and everything goes back to normal ~/.docker

@veeral-patel
Copy link

I just deleted the credStore key in my ~/.docker/config.json and restarted Docker...that fixed it.

@maityh
Copy link

maityh commented May 18, 2020

Hi @chris-crone I followed the same and 'docker login' is working fine for me! But, while I'm trying to push an image in dockerhub then it's throwing the below error.

docker image push himanshu/web1:latest
The push refers to repository [docker.io/himanshu/web1]
39e785d74fb4: Preparing
9c369364f19c: Waiting
2d47128370af: Waiting
7bebde348a1d: Waiting
cf7c2c56cca4: Waiting
767a7c7a385e: Waiting
8ffe9a6b762e: Waiting
a539b76feca4: Waiting
3e207b409db3: Waiting
denied: requested access to the resource is denied

@sselvanathan
Copy link

From the Docker Desktop icon, I logged in to the Docker (clicking the Sign in / Create Docker ID) and after that I was able to run again the docker commands.

Thank you so much Dude!

@SourceCode
Copy link

From the Docker Desktop icon, I logged in to the Docker (clicking the Sign in / Create Docker ID) and after that I was able to run again the docker commands.

I noticed I had this issue inside jetbrains IDE's (shell) when running but not in iterm2 (zsh). After logging out and back in, SH/ZSH inside and outside jetrabrain IDE's now works as well. (In case others come across this)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests