Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Bug: Failure to connect to Reaper leaves stale ryuk containers, leading to container name collisions

オープン
#1,093 コメント 1 件 リアクション 1 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
72/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
静か
技術スタック
docker, python
領域
testing

調査の方向性

Reaper._create_instance、特に372行目の接続から調査を開始し、ネットワークから隔離された環境で2テストのpytest例を使って失敗を再現してください。接続が拒否されたときに何が起こるかを追跡し、後続のテストが古いryukコンテナや、誤解を招く名前の競合による409エラーに遭遇しないことを確認してください。

索引モデルが issue の本文から書いたものです。

説明

Describe the bug

Running testcontainers in a network-isolated environment leaves stale ryuk containers. Further down this produces misleading error messages about duplicate containers.

  1. Reaper._create_instance starts a new ryuk container
  2. Reaper._create_instance fails to connect to the reaper container.
    Line 372 s.connect((container_host, container_port)) raises ConnectionRefusedError: [Errno 111] Connection refused
  3. Reaper._create_instance leaves the container running, without assigning it to Reaper._instance
  4. Test fails with Connection refused error message above
  5. Next test starts
  6. Reaper._create_instance attempts 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 the Reaper._instance but since it was never assigned it will not realize that it is already running. The unique ID is only generated once per session.
  7. 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

主要言語
Python
スター
2.3k
フォーク
386
平均マージ
4時間 40分
マージ済み PR(30日)
1

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

testcontainers/testcontainers-python のほかの issue

testcontainers/testcontainers-python の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。