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
Testing with Docker Desktop on a mac, I have this docker context state:
➜ docker context list
NAME TYPE DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
colima moby colima unix:///Users/brhiggins/.colima/default/docker.sock
default moby Current DOCKER_HOST based configuration unix:///var/run/docker.sock
desktop-linux * moby unix:///Users/brhiggins/.docker/run/docker.sock
The desktop-linux context is active, and /var/run/docker.sock does not exist. docker version correctly uses the active context and returns the server version info. However, docker.from_env() throws an error:
../../../.pyenv/versions/3.11.4/envs/myproj/lib/python3.11/site-packages/docker/client.py:96: in from_env
return cls(
../../../.pyenv/versions/3.11.4/envs/myproj/lib/python3.11/site-packages/docker/client.py:45: in __init__
self.api = APIClient(*args, **kwargs)
../../../.pyenv/versions/3.11.4/envs/myproj/lib/python3.11/site-packages/docker/api/client.py:197: in __init__
self._version = self._retrieve_server_version()
../../../.pyenv/versions/3.11.4/envs/myproj/lib/python3.11/site-packages/docker/api/client.py:221: in _retrieve_server_version
raise DockerException(
E docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))
If I set DOCKER_HOST=unix:///Users/brhiggins/.docker/run/docker.sock in my shell or in Python before calling docker.from_env(), it succeeds.
I'll concede that the name from_env sort of sounds like it only considers environment variables, but I had read it as creating a client from "the current environment" more broadly, and I had expected it to behave the same as the docker CLI.
NAME DESCRIPTION DOCKER ENDPOINT ERROR
colima * colima unix:///Users/dingobar/.colima/default/docker.sock
default Current DOCKER_HOST based configuration unix:///var/run/docker.sock
In this scenario I'd expect docker-py to use the Colima context.
def get_client(use: str | None = None) -> docker.DockerClient:
"""
Get a docker client for the given docker context
"""
context = docker.ContextAPI.get_context(use)
if context is None:
raise ContextNotExistError(f"Docker context {use!r} not found")
return docker.DockerClient(
base_url=context.endpoints["docker"]["Host"],
tls=context.TLSConfig
)
The Docker CLI context not used or supported error message means that the Docker CLI cannot find a context that matches the specified name. This can happen for a few reasons:
The context does not exist.
The context is not accessible to the Docker CLI.
The context is not supported by the Docker CLI.
To resolve this error, you can try the following:
Check the name of the context and make sure that it is correct.
Make sure that the context is accessible to the Docker CLI. You can do this by running the docker context ls command. This will list all of the available contexts.
Make sure that the context is supported by the Docker CLI. You can do this by running the docker info command. This will show you the version of the Docker CLI that you are using.
If you are still having problems, you can contact Docker support for assistance.
is this correct? guys, I am new to this docker world, so please let me know. everything is AI-generated except me, help me to explore and tackle the open source multiverse
Reacted by Martin Morset, Jamie Bliss, An Guoli, Khushiyant, Stefan Pejcic, Mark Dickinson, Nicholas de Paola , Chirag Jain and Felix Fontein
I stumbled here searching hot to specify context to docker.from_env()
Workaround I used is to specify context name, if provided, run command and check the endpoint for that context:
def get_context_endpoint(context_name):
try:
result = subprocess.run(['docker', 'context', 'ls'],
capture_output=True, text=True, check=True)
for line in result.stdout.splitlines()[1:]:
parts = line.split()
name = parts[0]
endpoint = ' '.join(parts[1:])
if name == context_name:
return endpoint
except subprocess.CalledProcessError:
return None
Can confirm the bug still exists and it is fixed by creating a config.json file (touch ~/.docker/config.json). Could this be reclassed as a bug? This breaks workflows on new systems without config.json
Activity
martimors commentedon Sep 8, 2023
Facing the exact issue.
In this scenario I'd expect
docker-pyto use the Colima context.My awful workaround is
[-]docker.from_env() ignores active context[/-][+]Docker CLI contexts not used or supported[/+]AstraLuma commentedon Nov 30, 2023
I'm doing this:
AstraLuma commentedon Nov 30, 2023
You might be running into #3190?
martimors commentedon Dec 1, 2023
I don't want to write code that selects a specific context, docker-py should know to use the current context.
Khushiyant commentedon Jan 4, 2024
Hey, anyone working on this issue? I have some idea for this issue.
David234-star commentedon Jun 22, 2024
The Docker CLI context not used or supported error message means that the Docker CLI cannot find a context that matches the specified name. This can happen for a few reasons:
To resolve this error, you can try the following:
Check the name of the context and make sure that it is correct.
Make sure that the context is accessible to the Docker CLI. You can do this by running the
docker context lscommand. This will list all of the available contexts.Make sure that the context is supported by the Docker CLI. You can do this by running the
docker infocommand. This will show you the version of the Docker CLI that you are using.If you are still having problems, you can contact Docker support for assistance.
is this correct? guys, I am new to this docker world, so please let me know. everything is AI-generated except me, help me to explore and tackle the open source multiverse
stefanpejcic commentedon Sep 19, 2024
I stumbled here searching hot to specify context to
docker.from_env()Workaround I used is to specify context name, if provided, run command and check the endpoint for that context:
sepcify that endpoint:
fix: Use host provided by default context if base_url is not provided.
fix: Use Host provided by default context if no host is provided.
fix: Use Host provided by default context if no host is provided.
fix: Use Host provided by default context if no host is provided.
fix: Use Host provided by default context if no host is provided.
fix: Use Host provided by default context if no host is provided.
fix: Use Host provided by default context if no host is provided.
TeaDrinkingProgrammer commentedon Jul 1, 2026
Can confirm the bug still exists and it is fixed by creating a
config.jsonfile (touch ~/.docker/config.json). Could this be reclassed as a bug? This breaks workflows on new systems without config.json