Containerd镜像构建

前言

在 Kubernetes(K8s)环境中,containerd 是更轻量、更符合标准的容器运行时(CRI),而 Docker 已被废弃(从 K8s v1.24 起不再默认支持),
以下是 纯 containerd 方式 构建并运行 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/*

# 复制静态文件到容器
COPY index.html /usr/share/nginx/html/

# 暴露 80 端口
EXPOSE 80

# 启动 Nginx(前台运行)
CMD ["nginx", "-g", "daemon off;"]

3. 制作镜像

# 构建镜像
nerdctl build -t my-nginx:latest .

# 查看镜像
nerdctl images
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容