首先非常推薦您先閱讀「【Docker 容器化】初探微服務時代的虛擬化技術」, 初步了解容器化可以為我們軟體開發帶來哪些好處, 相信您在操作Docker的過程中應該也有機會遇到「orphan containers」的問題, 如果您有更好的解決方法也歡迎底下留言分享給各為兄弟姊妹, 讓我們共同學習成長。
咦! 怎麼啟動個docker compose up -d就出現了可疑的訊息:
+] Running 2/2d orphan containers ([xxxx]) for this project.
If you removed or renamed this service in your compose file, you can run
這是什麼狀況呢? 照理說, 我們使用docker compose來管理容器應該會避免掉許多問題才對呀! 那為什麼又出現這狀況呢? 根據我們對這個問題的蒐集歸納出幾個原因:
看完上述可能原因之後, 我們推測一下遇到的狀況可能是因為我們的專案裡有兩份compose.yml, 一份是compose.dev.yml一份是compose.yml, 而某一個環境啟動之後, 因為程式發生意外但容器並未刪除, 導致遺留, 時間久了之後, 又切換成另外一份環境啟動, 就出現了「orphan containers」的狀況了!
我們也可以簡單暴力的卸載時移除孤兒容器:
docker compose down --remove-orphans
最好在啟動時加入 -p 的參數來隔開專案的名稱衝突。
docker compose -p xxx專案 up -d
雖然我們使用docker compose來管理容器已經減少大幅度的複雜度了, 但過程中仍會遇到小問題, 沒關係, 遇到問題我們就是解決, 也順便整理思路, 除了幫助一樣遇到問題的朋友們之外, 也幫助自己提升問題解決的思路。