前言
在 Kubernetes(K8s)環(huán)境中,containerd 是更輕量、更符合標(biāo)準(zhǔn)的容器運行時(CRI),而 Docker 已被廢棄(從 K8s v1.24 起不再默認支持),
以下是 純 containerd 方式 構(gòu)建并運行 Nginx 鏡像的完整流程
1.二進制安裝nerdctl
https://github.com/containerd/nerdctl

github
## 解壓
[root@uos ~]# tar Cxzvvf /usr/local nerdctl-full-2.1.3-linux-amd64.tar.gz
## 配置service
[root@uos lib]# cd systemd/system/
[root@uos system]# ll
總用量 12
-rw-r--r-- 1 root root 1309 7月 8 13:53 buildkit.service
-rw-r--r-- 1 root root 1248 7月 8 13:51 containerd.service
-rw-r--r-- 1 root root 312 7月 8 13:53 stargz-snapshotter.service
[root@uos system]# pwd
/usr/local/lib/systemd/system
[root@uos system]# cp buildkit.service /usr/lib/systemd/system/
## 配置buildkitd.toml
[root@uos ~]# cat /etc/buildkit/buildkitd.toml
[worker.containerd]
enabled = true
namespace = "k8s.io" # 與 Kubernetes 一致
[registry]
# Docker Hub 鏡像加速(替換為你的鏡像源)
[registry."docker.io"]
mirrors = ["https://docker.m.daocloud.io","https://hub.rat.dev"]
## 配置nerdctl.toml
[root@uos ~]# cat /etc/nerdctl/nerdctl.toml
namespace = "k8s.io" # 強制所有命令默認使用 k8s.io
2. 編寫Dockerfile(與 Docker 兼容)
[root@uos ~]# cat Dockerfile
# 使用官方 Nginx 鏡像(基于 Alpine 更輕量)
FROM nginx:alpine
# 刪除默認的 Nginx 歡迎頁
RUN rm -rf /usr/share/nginx/html/*
# 復(fù)制靜態(tài)文件到容器
COPY index.html /usr/share/nginx/html/
# 暴露 80 端口
EXPOSE 80
# 啟動 Nginx(前臺運行)
CMD ["nginx", "-g", "daemon off;"]
3. 制作鏡像
# 構(gòu)建鏡像
nerdctl build -t my-nginx:latest .
# 查看鏡像
nerdctl images