[Note] Docker and Kubernetes: The Complete Guide @ Udemy 學習筆記
此篇為筆記之整理,非原創內容,資料來源主要來自:Docker and Kubernetes: The Complete Guide @ Udemy
重要概念
- Image(映像檔):有所有執行程式時所需要相依的內容、設定、指令和執行檔。當在執行 container 時,它會使用一個獨立的檔案系統,而這個檔案系統即是透過 image 來提供。
- Container(容器):image 的 instance,真正執行的程式,它是獨立於本機所有 process 以外的一個 process。Container 包含了 image 中的 FS snapshot 和 Startup Command。
- Docker Client(Docker CLI):輸入 docker 指令的地方,可以透過安裝 Docker Desktop 取得
- Docker Server(daemon):建立映像檔、執行容器的地方
Kernel 和 Container
Kernel 介於硬體和軟體的中間,當應用程式在執行時,會透過 system call 告知 kernel 要執行的項目(例如,寫檔),kernel 收到指令後會再對硬體進行操作:
- name spacing:可以將單一 process(或 group of processes)使用到的資源加以隔離
- control groups(cgroups):可以限制每個 process 可以使用到的資源量多寡(例如,memory 的大小、CPU 的效能)
Container 的概念就如同下圖中紅色框線的位置:
Image 和 Container
- image 會在 container 中執行
- 當我們在講 image 的時候,實際上包含了一個「檔案系統的快照(FS Snapshot)」和「啟動他的指令(Startup Command)」
- 當一個 image 要在 container 中執行時,會把 image 中對應的 FS Snapshot 和 Startup Command 放一份到 container 中加以執行
Docker Life Cycle(Status of Container)
- created
- up(表示在執行中)
- exited
建立 Image
Dockerfile 建立的流程如下:
- 選定一個現有的 image 當作 base image
- 執行一些指令來安裝其他的程式
- 定義一些指令來啟動該 container