テクノロジー · 実用ガイド
Docker の「port is already allocated」?変更前に所有者を証明する
競合は別コンテナ、ホストプロセス、重複 Compose マッピング、またはデーモン状態にあります。正確なホスト IP・プロトコル・ポートを固定し、確認済み所有者だけを変更します。

このエラーは Docker が一つのホスト側 socket tuple を取得できなかった証拠で、所有者そのものは示しません。全リスナー停止や無関係なコンテナ削除の根拠ではありません。
まず 0.0.0.0、TCP、8080 のようにホスト IP・プロトコル・ポートを記録し、同じ tuple で Docker とホストを照合します。
正確な tuple と context を固定する
完全なエラー、docker context、Compose プロジェクトとファイル、ホスト IP/port、container port、TCP/UDP を記録します。
有効 Compose 設定または docker run を保存し、重複、override、replica、二重要求を確認します。
Docker の全マッピングを探す
正確な port/protocol で docker ps -a の publish filter を使い、container と project label を確認します。関連 context も調べます。
別プロジェクトの実行中 container が所有者なら、影響を確認してから停止または remap します。
ホスト listener を独立に証明する
Linux は ss、Windows は Get-NetTCPConnection の LocalPort で絞り、local address と owning process を照合します。
PID を service/executable に対応させます。docker-proxy/dockerd なら container、他なら host-owner 分岐です。
分類してから修復する
container、host process、重複設定ごとに、その所有者だけを変更します。
どの一覧も空なら logs、version、context、network mode、失敗 command を保存し、restart/upgrade は限定テストにします。
両側の exit test で閉じる
修復後に Docker mapping と host listener を再確認し、意図した所有者だけが正確な tuple を保持することを確かめます。
service を起動し、公開 mapping と想定経路からの接続、exit code を記録します。
