最近因為新開發一個案子,測試使用 Docker 來進行佈屬程式
中間也遇到了些問題,所以希望可以把查詢到的資料先做個筆記,以備不時之需
基本觀念
Docker Image
- 包含了完整的基礎 root 檔案系統(以Linux來說)
- 作為系統樣版,供 Container 運行
Docker Container
- Image 對比 Container,就像是程式中的
Class
與Instance
- Container 實際上就像是系統中的一個 Process,因此不同於 VM,
在 Container 的環境中,必須要有一個 main process 正在執行,
而當這個 main process 結束後,這個 Container 也會隨之關閉 - 同第2點,許多人可能把 Container 當作 VM 的概念,
於是在建立 Container 後,執行一個背景執行程式(Service),但是 Container 很快就會關閉了,
這是因為 Container 並沒有一個 main process 正在執行,
所以使用 Container 時,必須使用前景運行的方式來執行所想要的服務
Docker for Windows 與 Windows Container
- Container 技術最早出現在 Linux 上,因此 Windows 想要使用就只能透過 Linux VM
- 最早要在 Windows 上使用 Docker,需要安裝 Docker Toolbox
主要是透過 Virtual Box 執行 Linux VM 來操作 Docker
但是既然 Windows 有 Hyper-V,可以運用 Hyper-V 的 VM,效能上應該比 Virtual Box 來的好 - 於是在 Microsoft 與 Docker 的配合下 Docker for Windows 出現了(應該是吧!)
使用 Hyper-V 建立的 Apline Linux + Busybox,以及原生的管理介面 - 但是畢竟還是只能執行 Linux 的 Container,也就是基礎上還是使用 Linux 的系統,
於是 Microsoft 也打造自己的 Container 技術, 並且擁抱 Docker 的管理指令,
這樣就不用額外學習新的指令就可以使用 Windows Container,
當然在 Windows Container 中就可以執行在 Windows 的程式(ex. IIS、MQSQL…)
指令筆記
- 清除沒有使用的 volumes
docker volume rm $(docker volume ls -q --filter dangling=true)
- 清除無效的 images
docker rmi $(docker images -f "dangling=true" -q)
參考資料
(GitBook)Docker — 从入门到实践
(GitBook)Docker學習筆記
Docker CLI Reference