
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 镜像缓存。可通过以下命令测试:
















