# Container vs Docker vs Kubernets ## Container: VM是實作在硬體層之上,為了建立可以執行整套作業系統的sandbox Container是實作在作業系統層之上,將應用程式所需的程式碼、函式庫、 環境配置檔都打包,而建立的sandb。 簡而言之,VM打包作業系統,Container打包應用程式。 ## Docker: Docker Include below two part. 1. Docker Image (映像檔) 唯獨的環境模板,涵蓋Container內的所有程式(包括應用程式、函式庫、 環境設定檔),用來建立Docker Container 2. Docker Container (容器) Container是根據docker image所建立的instance。image是唯獨的, 而container是可寫層。每個container之間都是互相獨立的平台。 容器是一個簡易版的 Linux 環境應用程式並可在其中運行程式。 ## Kubernets: K8s全名為Kubernetes,之所以被稱作K8s,是因為名稱的k與s之間有8個英文字母而得其名。K8s是一種 可用來自動化部屬、擴展及管理多個容器(Container)的系統,適用於當容器數量增加,需要穩定容器 環境,以及管理資源或權限分配的狀況。Kubernetes 是一個協助我們自動化部署、擴張以及管理容器應用 程式(containerized applications)的系統。相較於需要手動部署每個容器化應用程式(containers) 到每台機器上,Kubernetes 可以幫我 們做到以下幾件事情: 1. 同時部署多個 containers 到一台機器上,甚至多台機器。 2. 管理各個 container 的狀態。如果提供某個服務的 container 不小心 crash 了,Kubernetes 會偵測到並重啟這個 container,確保持續提供服務將一台機器上所有的 containers 轉移到另外一 台機器上。 3. 提供機器高度擴張性。Kubernetes cluster 可以從一台機器,延展到多台機器共同運行。 Kubernets 四元素: 1. Pod: Kubernetes 運作的最小單位,一個 Pod 對應到一個應用服務(Application) ,舉例來說一個 Pod 可能會對應到一個 API Server。 每個 Pod 都有一個身分證,也就是屬於這個 Pod 的 yaml 檔(docker-compose.yaml) 一個 Pod 裡面可以有一個或是多個 Container,但一般情況一個 Pod 最好只有一個 Container 同一個 Pod 中的 Containers 共享相同資源及網路,彼此透過 local port number 溝通 2. Node: Kubernetes 運作的最小硬體單位,一個 Worker Node(簡稱 Node)對應到一台機器,可以是實體機 如你的筆電、或是虛擬機如 AWS 上的一台 EC2 或 GCP 上的一台 Computer Engine。 3. Cluster: Kubernetes 中多個 Node 與 Master 的集合。基本上可以想成在同一個環境裡所有 Node 集合在一 起的單位。 Cluster include many Nodes, Node include many Pods.
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up