You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Cannot pull images when logged in to Docker Desktop (Status 500: unauthorized: incorrect username or password) #5121
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?
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.
Reacted by Shubham Aggarwal, Jean-Christophe Coleau and Jans Rautenbach
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.
Reacted by Melih Can AYDIN, Francisco Pavez, Marko Lokka, Root Kwak, Shilpi, LinghaoYu, Jorge Vargas, Shubham Aggarwal, Jean-Christophe Coleau and Hanan Hassan
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?
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)
@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.
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?
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?
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.
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
@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.
Activity
luedi commentedon Mar 10, 2022
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.
awojcik64 commentedon Apr 8, 2022
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.
Image pulled manually via
docker pull testcontainers/ryuk:0.3.3works just fine. It's just a workaround though.kiview commentedon Apr 8, 2022
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?
SiwyDym commentedon Apr 8, 2022
I tested on
4.3.2on macOS(12.1 (21C52)) and it's looking like a charm, but for Windows I encountered the same issue as @awojcik64awojcik64 commentedon Apr 8, 2022
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)
kiview commentedon Apr 8, 2022
@awojcik64 How I perceive the error so far with regards to pulling public images with Testcontainers:
docker login): 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 loginfrom CLI instead of the GUI and everything should work fine.SiwyDym commentedon Apr 11, 2022
I can confirm that issue occurs when I login by Docker Desktop GUI :|
Docker Desktop:
4.7.0 (77141)OS:
12.1 (21C52)kiview commentedon Apr 11, 2022
@SiwyDym Can you confirm that performing the login through CLI mitigates the issue?
SiwyDym commentedon Apr 11, 2022
I cannot confirm that, the only working mitigation for me is manually pulling the image
testcontainers/ryuk:0.3.3kiview commentedon Apr 11, 2022
@SiwyDym I see. Can you instead confirm that it works if your Docker daemon is unautheticated? (after
docker logout)kiview commentedon Apr 12, 2022
Another interesting aspect to try out is if doing a
docker login registry.hub.docker.commitigates the situation.18 remaining items
kiview commentedon May 10, 2022
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.
jim-jobcase commentedon May 11, 2022
@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
grishick commentedon Jun 10, 2022
The fix that worked for me on an M1 Mac was:
remove
credsStore:desktopfrom~/.docker/config.json, rundocker loginin terminalStFS commentedon Jan 9, 2023
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:
Since the container that we're running the Maven tests from within doesn't have the docker executable, I can't run
docker loginin our CI scripts.Does anybody have anything I could try out to get this working?
kiview commentedon Jan 10, 2023
@StFS Can you please ask about this in Slack, or open a dedicated discussion/issue?
This issue is about Docker Desktop.
StFS commentedon Jan 10, 2023
Good point. Sorry about that.
OlehOnyshchuk commentedon Jan 12, 2023
Had the same issue. Logout, and than login via console. Helped for me.
Added Docker portion from integration testing
Fixed the issue breaking the tests: namely the older version of testc…
cdlarue commentedon Jan 25, 2024
This is the exact situation I have as well. Has anyone found a workaround or solution?
angelomelonas commentedon Mar 13, 2024
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.
josebarros2025 commentedon May 22, 2024
sorry this isnt a valid solution, somebody must run this in a pipeline for example, the image must be pulled
kiview commentedon May 23, 2024
@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.
angelomelonas commentedon May 23, 2024
Ah that does makes sense. I will create a separate issue for that. Thanks @kiview!