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

render: label the Docker containers and networks render creates

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

メンテナーはふだん 3 日以内に返信

@jcogilvie がすでに取り組んでいます。

2026年10月1日 から。

  • #407 @jcogilvie による — オープン

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
48/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
活発
技術スタック
docker, go
領域
cli, devops

調査の方向性

Start by tracing RuntimeDocker.createContainer, the Docker engine's render container creation, and createRenderNetwork. Read the existing cleanup-policy handling and follow how render sessions and networks are created and removed; done means every render-owned container and network carries consistent identifying labels without changing existing cleanup behavior.

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

説明

enhancement
What problem are you facing?

There's no reliable way to tell which Docker containers and networks were created by crossplane render, so
anything it leaves behind can't be found and cleaned up afterwards.

Today the containers render creates carry only the image's own io.crossplane.xpkg:* label, unnamed
Function containers get random Docker names (suspicious_newton, distracted_mestorf, …), and the
crossplane internal render engine container and the crossplane-render-* network carry no labels at all.
Matching by image or name prefix is guesswork, and can catch containers the user started on purpose.

This matters because leftovers happen:

  • Some interruptions can never be cleaned up in-process: kill -9, a crash, an OOM kill, a CI job timeout.
    Even with signal handling (#400), these leave resources behind.
  • Containers deliberately kept with runtime-docker-cleanup: Orphan or runtime-docker-name (for warm
    reuse across invocations) build up over time and can't be told apart from accidental leaks.
  • Tools built on the render library — for example
    crossplane-diff, which renders many times per run —
    have the same problem and currently have to track container names themselves.
How could Crossplane help solve your problem?

Add labels to every container and network render creates (in RuntimeDocker.createContainer, the docker
engine's render container, and createRenderNetwork). For example:

Label Value Purpose
render.crossplane.io/managed-by crossplane Identifies render-owned resources
render.crossplane.io/session per-invocation ID Scopes cleanup to one run
render.crossplane.io/cleanup the effective cleanup policy (Remove, Stop, Orphan) Lets a sweep skip containers the user deliberately kept
render.crossplane.io/created-by-pid (optional) PID Helps detect leftovers from dead sessions

That enables:

  • A plain docker ps -a --filter label=render.crossplane.io/managed-by=crossplane for users.
  • Optionally, a small subcommand (e.g. crossplane render cleanup [--all]) that removes leftovers from dead
    sessions, skipping containers kept with Orphan/runtime-docker-name unless --all is given.
  • Safer network cleanup: before removing a network, render could force-remove containers from its own
    session that are still attached, without touching unrelated containers on a user-supplied
    --crossplane-docker-network (see #398).
  • Library consumers could clean up by label and session ID instead of tracking container names themselves.

Adding labels is purely additive and doesn't change behaviour for existing users.

主要言語
Go
スター
19
フォーク
33
平均マージ
3日 10時間
マージ済み PR(30日)
24

環境構築

はじめの一歩

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

crossplane/cli のほかの issue

crossplane/cli の issue をすべて見る

似ている issue

Go の issue をもっと見る

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

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