科技 · 實用指南
Docker 顯示「連接埠已分配」?變更前先證明擁有者
衝突可能屬於另一個容器、主機程序、重複 Compose 對應或守護程式狀態。先固定準確的主機 IP、協定與連接埠,再只改已驗證擁有者。

「連接埠已分配」只表示 Docker 無法取得一個主機 socket tuple,並未證明誰佔用,也不表示要終止所有監聽或刪除無關容器。
先寫下主機 IP、協定與連接埠,例如 0.0.0.0、TCP、8080。用同一 tuple 比對 Docker 對應與主機監聽。
固定準確 tuple 與 Docker context
保存完整錯誤,記錄 context、Compose 專案與檔案、主機 IP、主機埠、容器埠及 TCP/UDP。不要只記「8080」。
渲染有效 Compose 設定或保存 docker run,檢查重複對應、覆寫、replica 或兩個服務請求同一 tuple。
尋找全部 Docker 對應
以準確連接埠和協定執行 docker ps -a publish 篩選,再檢查容器與專案標籤。相關 context 都要查。
其他專案執行中的容器是真正擁有者;確認工作負載後才停止或改映射。
獨立證明主機監聽者
Linux 用 ss 查監聽 TCP/UDP 與程序;Windows 用 LocalPort 篩選 Get-NetTCPConnection,再比對 LocalAddress、State、OwningProcess。
將 PID 對應到服務或程式並確認用途。docker-proxy/dockerd 通常指回容器,其他程式則是主機擁有者。
分類後再修復
容器擁有者只改對應設定並重建該服務;主機程序重新設定或精確停止;重複設定則移除重複項後再渲染。
若容器與 socket 清單都空,保存日誌、版本、context、網路模式與失敗命令,把重新啟動當成有界測試。
以雙側退出測試結案
修復後重跑 Docker 對應與主機監聽。只有預期擁有者應持有準確 tuple,其他工作負載不變。
啟動服務、檢查發布對應、從預期網路位置測試地址並保存退出碼。
