Skip to content

Bug: Testcontainer fails to fetch server api version on 4.11 but works on 4.10 #830

Open
@KantiCodes

Description

@KantiCodes

Describe the bug

Hey seems like you released a new minor version 2 hours ago and it has a bug in it.

Bug: Testcontainer fails to fetch server api version on 4.11 but works on 4.10
To Reproduce

Install version 4.11 and try to run the from testcontainers.mssql import DbContainer, SqlServerContainer

>>> from testcontainers.mssql import DbContainer, SqlServerContainer
Traceback (most recent call last):
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/urllib3/connectionpool.py", line 787, in urlopen
    response = self._make_request(
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/urllib3/connectionpool.py", line 493, in _make_request
    conn.request(
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/urllib3/connection.py", line 445, in request
    self.endheaders()
  File "/home/bartek/.local/share/uv/python/cpython-3.10.8-linux-x86_64-gnu/lib/python3.10/http/client.py", line 1277, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/home/bartek/.local/share/uv/python/cpython-3.10.8-linux-x86_64-gnu/lib/python3.10/http/client.py", line 1037, in _send_output
    self.send(msg)
  File "/home/bartek/.local/share/uv/python/cpython-3.10.8-linux-x86_64-gnu/lib/python3.10/http/client.py", line 975, in send
    self.connect()
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/docker/transport/unixconn.py", line 26, in connect
    sock.connect(self.unix_socket)
FileNotFoundError: [Errno 2] No such file or directory

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/requests/adapters.py", line 667, in send
    resp = conn.urlopen(
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/urllib3/connectionpool.py", line 841, in urlopen
    retries = retries.increment(
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/urllib3/util/retry.py", line 474, in increment
    raise reraise(type(error), error, _stacktrace)
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/urllib3/util/util.py", line 38, in reraise
    raise value.with_traceback(tb)
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/urllib3/connectionpool.py", line 787, in urlopen
    response = self._make_request(
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/urllib3/connectionpool.py", line 493, in _make_request
    conn.request(
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/urllib3/connection.py", line 445, in request
    self.endheaders()
  File "/home/bartek/.local/share/uv/python/cpython-3.10.8-linux-x86_64-gnu/lib/python3.10/http/client.py", line 1277, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/home/bartek/.local/share/uv/python/cpython-3.10.8-linux-x86_64-gnu/lib/python3.10/http/client.py", line 1037, in _send_output
    self.send(msg)
  File "/home/bartek/.local/share/uv/python/cpython-3.10.8-linux-x86_64-gnu/lib/python3.10/http/client.py", line 975, in send
    self.connect()
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/docker/transport/unixconn.py", line 26, in connect
    sock.connect(self.unix_socket)
urllib3.exceptions.ProtocolError: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/docker/api/client.py", line 223, in _retrieve_server_version
    return self.version(api_version=False)["ApiVersion"]
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/docker/api/daemon.py", line 181, in version
    return self._result(self._get(url), json=True)
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/docker/utils/decorators.py", line 44, in inner
    return f(self, *args, **kwargs)
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/docker/api/client.py", line 246, in _get
    return self.get(url, **self._set_request_timeout(kwargs))
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/requests/sessions.py", line 602, in get
    return self.request("GET", url, **kwargs)
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/requests/sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/requests/sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/requests/adapters.py", line 682, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/testcontainers/mssql/__init__.py", line 4, in <module>
    from testcontainers.core.generic import DbContainer
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/testcontainers/core/generic.py", line 16, in <module>
    from testcontainers.core.container import DockerContainer
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/testcontainers/core/container.py", line 12, in <module>
    from testcontainers.core.config import ConnectionMode
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/testcontainers/core/config.py", line 52, in <module>
    RYUK_DOCKER_SOCKET: str = get_docker_socket()
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/testcontainers/core/config.py", line 36, in get_docker_socket
    client = docker.from_env()
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/docker/client.py", line 94, in from_env
    return cls(
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/docker/client.py", line 45, in __init__
    self.api = APIClient(*args, **kwargs)
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/docker/api/client.py", line 207, in __init__
    self._version = self._retrieve_server_version()
  File "/home/bartek/projects/US/framework/.venv/lib/python3.10/site-packages/docker/api/client.py", line 230, in _retrieve_server_version
    raise DockerException(
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))

Runtime environment

Ubuntu, python 3.10.8

(bartek) ➜  ~ git:(main) ✗ uv pip list
Package            Version
------------------ ---------
certifi            2025.6.15
charset-normalizer 3.4.2
docker             7.1.0
idna               3.10
python-dotenv      1.1.0
requests           2.32.4
testcontainers     4.11.0
typing-extensions  4.14.0
urllib3            2.4.0
wrapt              1.17.2

EDIT:

I took a dig myself to try to find the culprit

kudos to @chbndrhnns to realizing it connects

4.10

testcontainers/core/config.py: 34

  • RYUK_DOCKER_SOCKET: str = environ.get("TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE", "/var/run/docker.sock")

4.11

testcontainers/core/config.py:52

  • RYUK_DOCKER_SOCKET: str = get_docker_socket()

Where the get_docker_socket connects

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions