Kubernetes (k8s) Pod 中的應用程式可以透過 Docker 建立的容器映像檔來運行,但這不是唯一的方式。以下是詳細說明:( k8s 安裝可以查看先前的文章 link )
須知得基礎如下:
基本關係
- 傳統方式 (早期 k8s 版本):
- Kubernetes 最初使用 Docker 作為默認的容器運行時(container runtime)
- 開發者用 Docker 工具構建映像檔
- k8s 通過 Docker 運行這些容器映像檔
- 現代方式 (當前 k8s 版本):
- Kubernetes 已移除了對 Docker 的直接依賴
- 改用符合 CRI (Container Runtime Interface) 標準的運行時
- 仍可使用 Docker 構建映像檔,但運行時不一定使用 Docker
當前實際運作方式
- 映像檔構建:
- 您仍然可以使用 Docker 工具 (
docker build
) 構建容器映像檔 - 也可以使用其他工具如 Buildah、Podman 或 Kaniko
- 您仍然可以使用 Docker 工具 (
- 映像檔運行:
- Kubernetes 使用符合 CRI 的運行時來運行容器,例如:
- containerd (最常見,Docker 也使用它作為底層)
- CRI-O
- 這些運行時可以載入標準 OCI 格式的容器映像檔
- Kubernetes 使用符合 CRI 的運行時來運行容器,例如:
- 實際流程範例:

為什麼 Kubernetes 不再直接依賴 Docker
- 架構簡化:移除不必要的組件
- 標準化:使用 CRI 接口支持多種運行時
- 性能:containerd 比完整 Docker 更輕量
如何檢查您的集群使用什麼運行時
kubectl get nodes -o wide
# 查看 CONTAINER-RUNTIME 列
# 或直接在節點上檢查
ps aux | grep containerd
ps aux | grep docker
Kubernetes 部署 Pod 的完整流程
一般情況下部署應用到 Kubernetes 的基本流程確實包含「先建立容器映像檔,再部署到 k8s」的步驟,但具體實現方式有許多變化。以下是詳細說明:

1. 建立容器映像檔(Docker 是選項之一)
docker build -t your-username/your-app:tag .
2. 推送至映像檔倉庫
docker push your-username/your-app:tag
3. 部署到 Kubernetes
kubectl create deployment your-app --image=your-username/your-app:tag
或使用 YAML 定義文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: your-app
spec:
replicas: 3
template:
spec:
containers:
- name: main
image: your-username/your-app:tag