Bug: Failure to connect to Reaper leaves stale ryuk containers, leading to container name collisions
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 72/100
Research direction
Start in Reaper._create_instance, especially the connection at line 372, and reproduce the failure with the two-test pytest example in a network-isolated environment. Trace what happens when the connection is refused and verify that a later test does not encounter a stale ryuk container or a misleading 409 name-conflict error.
Written by the indexing model from the issue text.
Description
Describe the bug
Running testcontainers in a network-isolated environment leaves stale ryuk containers. Further down this produces misleading error messages about duplicate containers.
Reaper._create_instancestarts a new ryuk containerReaper._create_instancefails to connect to the reaper container.
Line 372s.connect((container_host, container_port))raisesConnectionRefusedError: [Errno 111] Connection refusedReaper._create_instanceleaves the container running, without assigning it toReaper._instance- Test fails with
Connection refusederror message above - Next test starts
Reaper._create_instanceattempts starting a new ryuk container. Fails with misleading error message:requests.exceptions.HTTPError: 409 Client Error: Conflict for url: http+docker://localhost/v1.55/containers/create?name=testcontainers-ryuk-6810abc7-a781-44ec-928a-2c671c8881d9. Normally this should reuse theReaper._instancebut since it was never assigned it will not realize that it is already running. The unique ID is only generated once per session.- Second test fails with the misleading message about duplicate ryuk containers.
To Reproduce
Run a pytest suite having at least 2 tests attempting to use testcontainers in a network-isolated environment, such as Bazel with tags=["block-network"]
BUILD.bazel
load("@rules_python//python:defs.bzl", "py_test")
py_test(
name = "test_ryuk_repro",
srcs = ["test_ryuk_repro.py"],
tags = ["block-network"],
deps = [
"@pip//pytest:pkg",
"@pip//testcontainers:pkg",
],
)
test_ryuk_repro.py
import pytest
from testcontainers.core.container import DockerContainer
def test_a():
with DockerContainer("hello-world"): # Fails with ConnectionError
pass
def test_b():
with DockerContainer("hello-world"): # Fails with 409 Conflict error
pass
Runtime environment
Provide a summary of your runtime environment. Which operating system, python version, and docker version are you using? What is the version of testcontainers-python you are using? You can run the following commands to get the relevant information.
# Get the operating system information (on a unix os).
$ uname -a
Linux ... 7.0.0-27-generic #27-Ubuntu SMP PREEMPT_DYNAMIC Thu Jun 18 19:13:49 UTC 2026 x86_64 GNU/Linux
# Get the python version.
$ python --version
3.11
$ docker info
Client: Docker Engine - Community
Version: 29.6.1
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.35.0
Path: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v5.3.1
Path: /usr/libexec/docker/cli-plugins/docker-compose
$ pip freeze
testcontainers==4.14.2
- Dominant language
- Python
- Stars
- 2.3k
- Forks
- 386
- Avg merge
- 4h 40m
- Merged PRs (30d)
- 1
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from testcontainers/testcontainers-python
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
testcontainers/testcontainers-python#1115 · 1 reaction ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
testcontainers/testcontainers-python#1086 · 1 comment ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
testcontainers/testcontainers-python#578 · 5 comments ·
-
Difficulty 3/5 1-2 days Newbie friendliness 68/100
All issues in testcontainers/testcontainers-python
Similar issues
-
Add: hunch Open
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
AbdelStark/awesome-typesafe#104 ·
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
DiamondLightSource/dodal#2211 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
openml/openml-python#1749 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
sipyourdrink-ltd/bernstein#6191 ·