-
Bug
-
Resolution: Done
-
Undefined
-
None
-
rhel-8.10
-
None
-
Yes
-
None
-
Patch
-
1
-
rhel-sst-pt-python-ruby-nodejs
-
ssg_platform_tools
-
3
-
False
-
-
None
-
Not associated with a product
-
PT PRNDL 2025 S01
-
None
-
None
-
x86_64
-
None
Hi,
this is my first bug submit here, i hope i categorized this correct. i could not find the exact package to select here but this package sits in rhel8-base repo.
After RHSA-2025:0012 and updating python3-requests from 2.20.0-3.el8_8 to 2.20.0-5.el8_10 on mutiple machines we cant use the python-docker to connect to the Docker API, downgrading this packages fixes this.
We noticed it due to mk_docker.py Plugin from Checkmk failing to retrieve data, therefore we cant monitor docker containers atm on these hosts.
Steps to reproduce:
Update python3-requests to requested version
have python3-docker installed (tested with python-docker-5.0.0-2.el8) and also docker (docker-ce-24.0.7-1.el8.x86_64)
python3 import docker client = docker.DockerClient(base_url='unix://var/run/docker.sock') Traceback (most recent call last): File "/usr/lib/python3.6/site-packages/docker/api/client.py", line 214, in _retrieve_server_version return self.version(api_version=False)["ApiVersion"] File "/usr/lib/python3.6/site-packages/docker/api/daemon.py", line 181, in version return self._result(self._get(url), json=True) File "/usr/lib/python3.6/site-packages/docker/utils/decorators.py", line 46, in inner return f(self, *args, **kwargs) File "/usr/lib/python3.6/site-packages/docker/api/client.py", line 237, in _get return self.get(url, **self._set_request_timeout(kwargs)) File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 548, in get return self.request('GET', url, **kwargs) File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 535, in request resp = self.send(prep, **send_kwargs) File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 648, in send r = adapter.send(request, **kwargs) File "/usr/lib/python3.6/site-packages/requests/adapters.py", line 584, in send request, verify, proxies=proxies, cert=cert File "/usr/lib/python3.6/site-packages/requests/adapters.py", line 457, in get_connection_with_tls_context **host_params, pool_kwargs=pool_kwargs File "/usr/lib/python3.6/site-packages/urllib3/poolmanager.py", line 229, in connection_from_host return self.connection_from_context(request_context) File "/usr/lib/python3.6/site-packages/urllib3/poolmanager.py", line 239, in connection_from_context pool_key_constructor = self.key_fn_by_scheme[scheme] KeyError: 'http+docker'During handling of the above exception, another exception occurred:Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python3.6/site-packages/docker/client.py", line 45, in __init__ self.api = APIClient(*args, **kwargs) File "/usr/lib/python3.6/site-packages/docker/api/client.py", line 197, in __init__ self._version = self._retrieve_server_version() File "/usr/lib/python3.6/site-packages/docker/api/client.py", line 217, in _retrieve_server_version 'Invalid response from docker daemon: key "ApiVersion"' docker.errors.DockerException: Invalid response from docker daemon: key "ApiVersion" is missing.
This seems to happen due to the new, improved tls handling.
This Patch below provides a workaround at the time for us. We dont use tls because we connect via unix socket so we can use our monitoring script again untils these issue is completely fixed.
--- /usr/lib/python3.6/site-packages/requests/adapters.py.save 2025-01-21 15:17:53.489327269 +0100
+++ /usr/lib/python3.6/site-packages/requests/adapters.py 2024-12-20 13:45:02.000000000 +0100
@@ -580,8 +580,8 @@
""" try:
- conn = self.get_connection(
- request.url, proxies=proxies
+ conn = self.get_connection_with_tls_context(
+ request, verify, proxies=proxies, cert=cert
)
except LocationValueError as e:
raise InvalidURL(e, request=request)