ARM架构实战:Containerd镜像加速与私有仓库配置全指南(KylinV10+K8s 1.30.1)_配置文件

Containerd配置容器镜像仓库(公共加速镜像仓库和私有仓库)

最近入手了一台arm架构机器,装了KylinV10系统,安装了单节点的Kubernetes用的版本是1.30.1,用的容器运行时是Containerd,因为和Docker操作略有不同,但是和Docker的仓库地址是通用的,也就是它可以用Docker搭建的Harbor仓库的镜像,也可以用Docker的镜像

配置他的加速仓库

一、公共镜像加速配置

配置 config.toml 启用镜像加速目录

编辑 /etc/containerd/config.toml,确保以下配置启用

[root@arm-k8s ~]# vim /etc/containerd/config.toml
    [plugins."io.containerd.grpc.v1.cri".registry]
      config_path = "/etc/containerd/certs.d"  # 指定镜像加速配置目录

为 Docker Hub 配置镜像加速

创建目录并生成配置文件:

# 创建 Docker Hub 配置目录
sudo mkdir -p /etc/containerd/certs.d/docker.io

编辑 /etc/containerd/certs.d/docker.io/hosts.toml,添加以下内容:

[root@arm-k8s ~]# cat /etc/containerd/certs.d/docker.io/hosts.toml
server = "https://docker.io"

  [host."https://docker.1ms.run/"]
  capabilities = ["pull", "resolve"]
  [host."https://docker.1panel.live"]
  capabilities = ["pull", "resolve"]
  [host."http://hub-mirror.c.163.com"]
  capabilities = ["pull", "resolve"]
  [host."https://do.nark.eu.org"]
  capabilities = ["pull", "resolve"]
  [host."https://dc.j8.work"]
  capabilities = ["pull", "resolve"]
  [host."https://dockerproxy.com"]
  capabilities = ["pull", "resolve"]
  [host."https://docker.mirrors.ustc.edu.cn"]
  capabilities = ["pull", "resolve"]
  [host."https://docker.mirrors.ustc.edu.cn"]
  capabilities = ["pull", "resolve"]
  [host."https://docker.registry.cyou"]
  capabilities = ["pull", "resolve"]
  [host."https://docker-cf.registry.cyou"]
  capabilities = ["pull", "resolve"]
  [host."https://dockercf.jsdelivr.fyi"]
  capabilities = ["pull", "resolve"]
  [host."https://docker.jsdelivr.fyi"]
  capabilities = ["pull", "resolve"]
  [host."https://dockertest.jsdelivr.fyi"]
  capabilities = ["pull", "resolve"]
  [host."https://mirror.aliyuncs.com"]
  capabilities = ["pull", "resolve"]
  [host."https://mirror.baidubce.com"]
  capabilities = ["pull", "resolve"]
  [host."https://docker.m.daocloud.io"]
  capabilities = ["pull", "resolve"]
  [host."https://docker.nju.edu.cn"]
  capabilities = ["pull", "resolve"]
  [host."https://docker.mirrors.sjtug.sjtu.edu.cn"]
  capabilities = ["pull", "resolve"]
  capabilities = ["pull", "resolve"]
  [host."https://docker.mirrors.ustc.edu.cn"]
  capabilities = ["pull", "resolve"]
  [host."https://mirror.iscas.ac.cn"]
  capabilities = ["pull", "resolve"]
  [host."https://docker.rainbond.cc"]
  capabilities = ["pull", "resolve"]
  [host."https://do.nark.eu.org"]
  capabilities = ["pull", "resolve"]
  [host."https://docker.shootchat.top"]
  capabilities = ["pull", "resolve"]
  [host."https://registry.docker-cn.com"]
  capabilities = ["pull", "resolve"]

二、私有镜像仓库配置

若包含私有仓库地址(如 https://images.guoguod.cn),需指定 insecure_skip_verify26:

全局配置兼容性

若 Containerd 主配置文件(/etc/containerd/config.toml)已启用 config_path 参数,不可同时配置 registry.mirrors 或 registry.configs,否则会导致服务启动失败。
证书管理
自签名 HTTPS 仓库:建议将 CA 证书文件(如 ca.crt)放入 /etc/containerd/certs.d/仓库域名/ 目录,并配置 ca_file 参数替代 skip_verify。
HTTP 仓库:直接使用 skip_verify = true 即可,无需证书。
工具兼容性
ctr 命令:需通过 --hosts-dir 参数显式指定配置目录(如 ctr image pull --hosts-dir=/etc/containerd/certs.d),否则可能忽略配置。
nerdctl 命令:自动读取 /etc/containerd/certs.d/ 配置,无需额外参数。

Containerd 支持通过 独立目录 管理镜像仓库配置,无需修改主配置文件 config.toml,推荐路径为 /etc/containerd/certs.d/,结构如下

/etc/containerd/certs.d/
└── images.guoguod.cn/         # 仓库域名或IP:端口
    ├── guoguod.cn.crt         # 自签名CA证书(必须)
    └── hosts.toml             # 仓库配置(镜像地址、认证、证书)

1、核心配置步骤

①创建仓库配置目录

# 创建仓库专属目录(域名或IP:端口)
sudo mkdir -p /etc/containerd/certs.d/images.guoguod.cn

# 将仓库私有证书放到此目录下
[root@arm-k8s images.guoguod.cn]# pwd
/etc/containerd/certs.d/images.guoguod.cn
[root@arm-k8s images.guoguod.cn]# ll
总用量 4
-rw-r--r-- 1 root root 2094  4月  5 21:20 guoguod.cn.crt

②配置 hosts.toml 文件

编辑 /etc/containerd/certs.d/images.guoguod.cn/hosts.toml,添加以下内容

[root@arm-k8s images.guoguod.cn]# cat /etc/containerd/certs.d/images.guoguod.cn/hosts.toml
server = "https://images.guoguod.cn"  # 仓库地址

# 仓库访问端点配置
[host."https://images.guoguod.cn"]
  capabilities = ["pull", "resolve", "push"]  # 支持的操作
  ca = "guoguod.cn.crt"                               # 证书文件名(需与目录中的文件一致)
  skip_verify = false                         # 严格模式需关闭跳过验证

  # 认证信息(可选,若需登录)
  [host."https://images.guoguod.cn".auth]
    username = "admin"
    password = "123456"

③重启服务

sudo systemctl restart containerd

四、工具使用注意事项

ctr 命令显式指定配置目录 使用 ctr 拉取镜像时,必须添加 --hosts-dir 参数:

ctr images pull --hosts-dir=/etc/containerd/certs.d images.guoguod.cn/apps/nginx:1.20.2

五、最终验证步骤

使用 crictl 或 nerdctl 拉取镜像(自动加载配置):

crictl pull docker.io/library/redis:arm64v8  # 指定 ARM 镜像

使用 ctr 需手动指定配置目录

六、注意事项

工具兼容性

ctr 需手动指定 --hosts-dir 参数; crictl 和 nerdctl 默认读取 /etc/containerd/certs.d。 镜像源有效性 部分地址(如 docker.1ms.run、do.nark.eu.org)需验证是否可用,建议优先选择主流镜像源(如阿里云、中科大)。 配置优先级 Containerd 按配置顺序尝试拉取镜像,建议将稳定加速源放在前面。

KylinV10 为 ARM 架构,需确认镜像源是否支持 ARM 镜像缓存。可通过以下命令测试: