人生就是不斷學習,調整與更新持續前進。

Docker理論知識與指令格式

Container容器:

 

為什麼容器能啟動得這麼快?

容器的快速啟動來自於它不需要像虛擬機一樣載入整個作業系統。容器是直接在宿主機的 Linux 核心上運行,透過 namespaces 與 cgroups 來實現隔離與資源限制,因此啟動時只需載入應用程式和它的相依環境即可。這種「共用核心、獨立空間」的設計讓容器能在幾秒甚至幾百毫秒內啟動,非常適合敏捷開發和自動化部署流程。


原來 image layering 是這樣運作的!

Docker image 是由多個層(layer)組成的,每一層對應 Dockerfile 中的一個指令(例如 RUN, COPY, ADD)。這些層是唯讀的,而當你啟動一個 container 時,Docker 會加上一層可寫層(writeable layer),讓你可以在容器中執行變更操作(如安裝套件、修改檔案)。這種分層架構讓 image 可以重複使用共通的底層(例如 base image),節省空間、加快建置與部署速度。也因此,當 image 有部分變更時,只需重建被改動的那幾層,不用重新建置整個 image。


container 跟 VM 到底有什麼差別?(這點以前一直搞混…)

最大的差別在於虛擬機模擬整個硬體與作業系統,而容器是共用宿主機的作業系統核心。VM 通常使用 Hypervisor(像是 VirtualBox、VMware 或 KVM)來建立獨立的 OS 環境,每個 VM 都要開機一個完整的 OS,因此啟動較慢、佔用資源也多。反之,Docker 容器只包裝應用程式及其依賴,運行在相同的 OS 核心上,資源使用更輕巧、啟動速度更快,也更容易水平擴展。不過,容器的隔離性(尤其是安全性)不如 VM 強,因此在安全需求極高的場景,VM 仍是主流選擇之一。

 

Docker指令格式:


# docker 對象 指令 參數
對象: container, image, network, volume, ...
指令: run, rm, ls, inspect, ...


Docker相關重點:

 

當你開始使用 Docker 開發或部署應用程式時,理解其背後的核心概念與指令運作方式將大幅提升效率。從容器的隔離與資源控管、映像檔的建置與版本控管、到網路與儲存的管理,每個環節都密不可分。熟悉這些基礎後,你將能更靈活地打造穩定、可攜且可擴展的應用環境。未來也能更輕鬆地深入 CI/CD、自動化部署與微服務架構等進階應用。