テクノロジー · 実用ガイド

Docker の network に active endpoints?削除前に owner をすべて特定する

正確な network ID、停止 container、Compose project label、Swarm service を一つの owner ledger にします。owner を変更してから同じ ID を再検証します。

Docker network identity を container、Compose、Swarm owner に対応付ける図。
オリジナルのイラスト:network、owner、action を順に特定します。 Watch at Ease

「network has active endpoints」は、正確な network object に attachment が残ることを示します。実行中または停止 container、別の Compose project、task を再作成する Swarm service の可能性があります。

最初に prune、force-disconnect、daemon restart を行いません。network ID、driver、scope、label を保存し、owner を列挙して owner 側を変更し、同じ ID を検証します。

正確な network identity を固定する

error を保存し docker network inspect で name を一つの ID に解決します。Name、ID、Driver、Scope、Internal、Attachable、Labels を記録し、以後その ID を使います。

cleanup 前に inspect を export します。同じような name は ID と Compose label で区別し、overlay と bridge の owner と change window を混同しません。

endpoint owner ledger を作る

Containers map と docker ps -a --filter network=<ID> を使い、container ID、name、state、label、network を記録します。停止は endpoint removal の証拠ではありません。

Compose project、service、one-off label を記録します。label がなければ作成経路を調べ、未知 endpoint を owner 同意なしで切断しません。

症状ではなく owner を変更する

Compose は作成時の正確な project identity と file set を使います。--remove-orphans の対象を確認し、external network は別 owner の計画に従います。

Swarm は overlay を宣言する service または stack を変更します。task container だけの削除は desired state により置換されます。

teardown race と persistent state を分ける

失敗後に同じ ID が空なら少し待ち、新 task がないことを確認して narrow removal を一度再試行します。同名の新 ID は再監査します。

同じ ID が空のまま失敗するなら daemon log、Engine version、driver、reproduction を収集し、その後だけ controlled restart を検討します。

health を検証して原因を閉じる

owner が消えた後に同じ ID を inspect します。ledger が空で計画上 disposable な場合だけ削除し、shared network と残る service の接続を確認します。

stopped container、Compose mismatch、orphan、external、Swarm、race、daemon/driver の原因を記録し、対応する runbook を直します。

standalone、Compose、Swarm、race を分ける決定図。
オリジナルのイラスト:owner boundary で修復します。 Watch at Ease