Skip to content

Cannot pull images when logged in to Docker Desktop (Status 500: unauthorized: incorrect username or password) #5121

Closed

Description

@MH-17

Test Containers 1.16.3 on Docker Engine 20.10.12 with Docker Desktop using WSL2 Backend on Windows 21H1.

When I am logged in to my account in Docker Desktop, Test Containers can no longer pull images from Docker Hub. Once I log out of my account, Test Containers is able to pull images as expected.

com.github.dockerjava.api.async.ResultCallbackTemplate - Error during callback
com.github.dockerjava.api.exception.InternalServerErrorException: Status 500: {"message":"Head \"https://registry-1.docker.io/v2/testcontainers/ryuk/manifests/0.3.3\": unauthorized: incorrect username or password"}
	at org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder.execute(DefaultInvocationBuilder.java:247)
	at org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder.lambda$executeAndStream$1(DefaultInvocationBuilder.java:269)
	at java.base/java.lang.Thread.run(Thread.java:833)

I think my Docker installation is fine, as I can pull images from the terminal when I am logged in to Docker Desktop. I don't want to log out every time I use Test Containers. How can I fix this issue?

Logs (on INFO): https://pastebin.com/fyExxi76

Logs (on DEBUG): https://pastebin.com/b4H283fL

Activity

  1. luedi commented on Mar 10, 2022

    @luedi

    I have exactly the same issue with Test Container 1.16.2. This issue only occurs if the Docker image has to be pulled. As long as I have a local image everything is fine.

  2. awojcik64 commented on Apr 8, 2022

    @awojcik64

    Problem still exists with Test Containers 1.16.3 and Docker Desktop with versions: 4.2.0, 4.3.2, 4.6.1 and 4.7.0
    Actually, it happens regardless if I'm logged in or not.

    12:21:49.321 [main] INFO  org.testcontainers.utility.ImageNameSubstitutor - Image name substitution will be performed by: DefaultImageNameSubstitutor (composite of 'ConfigurationFileImageNameSubstitutor' and 'PrefixingImageNameSubstitutor')
    12:21:49.368 [main] INFO  org.testcontainers.dockerclient.DockerClientProviderStrategy - Loaded org.testcontainers.dockerclient.NpipeSocketClientProviderStrategy from ~/.testcontainers.properties, will try it first
    12:21:49.854 [main] INFO  org.testcontainers.dockerclient.DockerClientProviderStrategy - Found Docker environment with local Npipe socket (npipe:////./pipe/docker_engine)
    12:21:49.854 [main] INFO  org.testcontainers.DockerClientFactory - Docker host IP address is localhost
    12:21:49.888 [main] INFO  org.testcontainers.DockerClientFactory - Connected to docker: 
      Server Version: 20.10.14
      API Version: 1.41
      Operating System: Docker Desktop
      Total Memory: 51188 MB
    12:21:55.569 [docker-java-stream--301690517] ERROR com.github.dockerjava.api.async.ResultCallbackTemplate - Error during callback
    com.github.dockerjava.api.exception.InternalServerErrorException: Status 500: {"message":"Head \"https://registry-1.docker.io/v2/testcontainers/ryuk/manifests/0.3.3\": unauthorized: incorrect username or password"}
    

    Image pulled manually via docker pull testcontainers/ryuk:0.3.3 works just fine. It's just a workaround though.

  3. kiview commented on Apr 8, 2022

    @kiview
    Member

    Thanks for bumping this issue. I was recently running into this error on Docker Desktop as well.
    Can you please try out to logout and then perform the Docker login on the command line instead (docker login)?

    And can someone reproduce this with Docker Desktop on macOS as well?

  4. SiwyDym commented on Apr 8, 2022

    @SiwyDym

    I tested on 4.3.2 on macOS(12.1 (21C52)) and it's looking like a charm, but for Windows I encountered the same issue as @awojcik64

  5. awojcik64 commented on Apr 8, 2022

    @awojcik64

    I don't know how I did that, but now containers are pulled correctly even if I am logged out of everything.
    I was only juggling logging in using GUI and command line. (tested on Docker Desktop 4.7.0)

  6. kiview commented on Apr 8, 2022

    @kiview
    Member

    @awojcik64 How I perceive the error so far with regards to pulling public images with Testcontainers:

    • Docker Desktop did the login through the GUI: not working ❌
    • Docker login through CLI and username/pw (docker login): working ✅
    • Docker logged out: working ✅

    For further triangulation, may I ask you @SiwyDym if you are sure that on macOS, you recently did a login through the Docker Desktop GUI and it still worked? Also, please make sure the images are not cache before trying out Testcontainers.

    So as a current workaround, I'd suggest doing the docker login from CLI instead of the GUI and everything should work fine.

  7. SiwyDym commented on Apr 11, 2022

    @SiwyDym

    I can confirm that issue occurs when I login by Docker Desktop GUI :|
    Docker Desktop: 4.7.0 (77141)
    OS: 12.1 (21C52)

  8. kiview commented on Apr 11, 2022

    @kiview
    Member

    @SiwyDym Can you confirm that performing the login through CLI mitigates the issue?

  9. SiwyDym commented on Apr 11, 2022

    @SiwyDym

    I cannot confirm that, the only working mitigation for me is manually pulling the image testcontainers/ryuk:0.3.3

  10. kiview commented on Apr 11, 2022

    @kiview
    Member

    @SiwyDym I see. Can you instead confirm that it works if your Docker daemon is unautheticated? (after docker logout)

  11. kiview commented on Apr 12, 2022

    @kiview
    Member

    Another interesting aspect to try out is if doing a docker login registry.hub.docker.com mitigates the situation.

  12. 18 remaining items

  13. kiview commented on May 10, 2022

    @kiview
    Member

    Which is the workaround you have currently applied? Also, maybe the block does not time out if you are connecting from the same IP address.

  14. jim-jobcase commented on May 11, 2022

    @jim-jobcase

    @kiview I just tried the command line fix on macOS 12.3.1 (M1 Pro) running Docker Desktop 4.8.1 and confirmed it works here too.

    Thank you!

    Edit: This was also using Testcontainers 1.16.2

  15. grishick commented on Jun 10, 2022

    @grishick

    The fix that worked for me on an M1 Mac was:
    remove credsStore:desktop from ~/.docker/config.json, run docker login in terminal

  16. StFS commented on Jan 9, 2023

    @StFS

    I'm running into this problem in our CI environment.

    We're running testcontainers via maven and this is the command line we use to run maven:
    mvn verify -DskipUnitTests -Dregistry.url=${CI_REGISTRY} -Dregistry.username=${CI_REGISTRY_USER} -Dregistry.password=${CI_REGISTRY_PASSWORD}

    We need to use a private registry to get the containers that are being tested, but for some reason, this seems to break testcontainers ability to fetch public containers:

    119153 [main] WARN  🐳 [testcontainers/ryuk:0.3.4]  - Retrying pull for image: testcontainers/ryuk:0.3.4 (2s remaining)
    124727 [docker-java-stream--909396508] ERROR com.github.dockerjava.api.async.ResultCallbackTemplate  - Error during callback
    com.github.dockerjava.api.exception.InternalServerErrorException: Status 500: {"message":"Get https://registry-1.docker.io/v2/testcontainers/ryuk/manifests/0.3.4: unauthorized: incorrect username or password"}
    	at org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder.execute(DefaultInvocationBuilder.java:247)
    	at org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder.lambda$executeAndStream$1(DefaultInvocationBuilder.java:269)
    	at java.base/java.lang.Thread.run(Thread.java:833)
    

    Since the container that we're running the Maven tests from within doesn't have the docker executable, I can't run docker login in our CI scripts.

    Does anybody have anything I could try out to get this working?

  17. kiview commented on Jan 10, 2023

    @kiview
    Member

    @StFS Can you please ask about this in Slack, or open a dedicated discussion/issue?
    This issue is about Docker Desktop.

  18. StFS commented on Jan 10, 2023

    @StFS

    @StFS Can you please ask about this in Slack, or open a dedicated discussion/issue? This issue is about Docker Desktop.

    Good point. Sorry about that.

  19. OlehOnyshchuk commented on Jan 12, 2023

    @OlehOnyshchuk

    Had the same issue. Logout, and than login via console. Helped for me.

    1. docker logout
    2. docker login --username
  20. cdlarue commented on Jan 25, 2024

    @cdlarue

    I'm running into this problem in our CI environment.

    We're running testcontainers via maven and this is the command line we use to run maven: mvn verify -DskipUnitTests -Dregistry.url=${CI_REGISTRY} -Dregistry.username=${CI_REGISTRY_USER} -Dregistry.password=${CI_REGISTRY_PASSWORD}

    We need to use a private registry to get the containers that are being tested, but for some reason, this seems to break testcontainers ability to fetch public containers:

    119153 [main] WARN  🐳 [testcontainers/ryuk:0.3.4]  - Retrying pull for image: testcontainers/ryuk:0.3.4 (2s remaining)
    124727 [docker-java-stream--909396508] ERROR com.github.dockerjava.api.async.ResultCallbackTemplate  - Error during callback
    com.github.dockerjava.api.exception.InternalServerErrorException: Status 500: {"message":"Get https://registry-1.docker.io/v2/testcontainers/ryuk/manifests/0.3.4: unauthorized: incorrect username or password"}
    	at org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder.execute(DefaultInvocationBuilder.java:247)
    	at org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder.lambda$executeAndStream$1(DefaultInvocationBuilder.java:269)
    	at java.base/java.lang.Thread.run(Thread.java:833)
    

    Since the container that we're running the Maven tests from within doesn't have the docker executable, I can't run docker login in our CI scripts.

    Does anybody have anything I could try out to get this working?

    This is the exact situation I have as well. Has anyone found a workaround or solution?

  21. angelomelonas commented on Mar 13, 2024

    @angelomelonas

    I am also encountering this issue while running Github Actions locally using Act. I have tried all the suggestions above, and none seem to work. When running my tests in CI (Github Actions), it works fine though.

  22. josebarros2025 commented on May 22, 2024

    @josebarros2025

    I have exactly the same issue with Test Container 1.16.2. This issue only occurs if the Docker image has to be pulled. As long as I have a local image everything is fine.

    sorry this isnt a valid solution, somebody must run this in a pipeline for example, the image must be pulled

  23. kiview commented on May 23, 2024

    @kiview
    Member

    @angelomelonas We never tested TC with Act, but essentially, this will lead to Docker-in-Docker scenario, so the issue you are facing here, is very likely independent from the issue that is discussed here. I would suggest opening a dedicated issue or discussion for using TC with Act and Docker authentication.

  24. angelomelonas commented on May 23, 2024

    @angelomelonas

    Ah that does makes sense. I will create a separate issue for that. Thanks @kiview!

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions