K8s containerd 镜像配置教程

适用于使用 containerd 的系统,如 Kubernetes(k3s / cri-o)或自建 containerd 环境,支持通过配置专属镜像域名专属域名提升镜像拉取速度、可控性与可用性。本教程同时支持 containerd v1.x 和 v2.x 版本,请根据您的版本选择对应的配置方式。

1
适用版本

本手册适用于以下 containerd 版本,请先确认您的版本:

< 1.4
不支持(语法不同)
1.4 ~ 1.7.x
配置方式:config.toml
完全支持(见下方 v1.x 配置)
≥ 1.7.x (v1.x)
配置方式:config.toml
推荐使用(见下方 v1.x 配置)
≥ 2.0 (v2.x)
配置方式:hosts.toml
配置方式不同(见下方 v2.x 配置)

请使用以下命令查看版本:

containerd --version

2
配置文件路径(v1.x)

containerd 的默认配置文件为:

/etc/containerd/config.toml

如未生成此文件,可使用以下命令初始化默认配置:

containerd config default > /etc/containerd/config.toml

3
镜像源配置示例(v1.x)

请在 config.toml 中添加以下配置(位于 plugins."io.containerd.grpc.v1.cri".registry.mirrors 节点):

[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
    endpoint = [
      "https://xxx.xuanyuan.run",
      "https://registry-1.docker.io"
    ]

  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."quay.io"]
    endpoint = ["https://xxx-quay.xuanyuan.run"]

  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."nvcr.io"]
    endpoint = ["https://xxx-nvcr.xuanyuan.run"]

  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.k8s.io"]
    endpoint = ["https://xxx-k8s.xuanyuan.run"]

  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."mcr.microsoft.io"]
    endpoint = ["https://xxx-mcr.xuanyuan.run"]

  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.elastic.co"]
    endpoint = ["https://xxx-elastic.xuanyuan.run"]

  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."container-registry.oracle.com"]
    endpoint = ["https://xxx-oracle.xuanyuan.run"]

  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"]
    endpoint = ["https://xxx-gcr.xuanyuan.run"]

  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."ghcr.io"]
    endpoint = ["https://xxx-ghcr.xuanyuan.run"]

💡重要提示:请将配置中的 xxx 替换为您的专属域名前缀。例如,如果您的专属域名为 123abc.xuanyuan.run,则应将 xxx 替换为 123abc

说明:多个 endpoint 可按优先级排列,containerd 会依次尝试,直到成功。

最佳实践:docker.io 的配置中,我们添加了 https://registry-1.docker.io 作为 fallback endpoint。这样即使专属域名配置有误或不可用,containerd 仍可回退到官方源,确保服务不会中断。

注意:以上配置已包含常用镜像仓库,如果您的项目使用其他镜像仓库,请参考上述格式自行添加配置。

扩展配置示例:

[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
  # 所有主要镜像仓库配置示例(如需添加其他仓库,请参考上述格式)
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."your-registry.io"]
    endpoint = ["https://xxx-your.xuanyuan.run"]

4
TLS 注意事项(v1.x)

如果因偶发情况触发证书验证失败。可使用以下配置忽略 TLS 校验:

[plugins."io.containerd.grpc.v1.cri".registry.configs."xxx.xuanyuan.run".tls]
  insecure_skip_verify = true

可针对不同域名分别设置。

5
应用配置(v1.x)

配置修改完成后,需重启 containerd:

sudo systemctl restart containerd

建议重启后使用 journalctl -u containerd -f 观察是否有报错信息。

6
验证配置是否生效(v1.x)

方法一:拉取镜像并观察网络行为

sudo crictl pull docker.io/library/nginx:alpine

或使用 nerdctl:

sudo nerdctl pull nginx:alpine

若配置生效,镜像将从你设置的专属域名拉取,而非默认 registry-1.docker.io。

7
常见问题

镜像拉取仍走官方源
可能原因(v1.x):
  • config.toml 配置无效或路径错误
  • config.toml 配置中没有配置对应的仓库
  • 专属域名没有流量
解决方法(v1.x):
  • 确认文件路径和语法,或重建配置文件
  • journalctl -u containerd -f 观察报错信息,看看具体是哪个仓库链接不上,配置到 config.toml 中
  • 前往充值页面充值流量包
镜像拉取仍走官方源(v2.x)
可能原因:
  • hosts.toml 文件路径错误或不存在
  • hosts.toml 配置语法错误
  • 未为对应的镜像仓库创建 hosts.toml 文件
  • 使用了错误的配置方式(v2.x 不能使用 v1.x 的 config.toml 配置)
解决方法:
  • 确认 hosts.toml 文件路径正确
  • 检查 hosts.toml 文件语法是否正确
  • 为每个需要访问的镜像仓库创建对应的目录和 hosts.toml 文件
  • 确认使用的是 v2.x 配置方式,参考上方的 v2.x 配置指南
containerd v2.x 配置后验证错误
可能原因:
  • 使用了 v1.x 的 config.toml 配置方式(v2.x 不支持)
  • hosts.toml 文件路径或格式错误
解决方法:
  • 确认 containerd 版本,v2.x 必须使用 hosts.toml 配置
  • 参考上方的 v2.x 配置指南重新配置
TLS 证书校验失败
v1.x 见 TLS 注意事项(v1.x),v2.x 在 hosts.toml 中设置 skip_verify = true
拉取失败报错 no matching endpoint
可能原因:
endpoint 拼写错误或域名不可访问
解决方法:
检查域名可用性与拼写正确性

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

oldzhang的头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

免费获取在线技术支持请 提交工单,官方QQ群:13763429 。
轩辕镜像面向开发者与科研用户,提供开源镜像的搜索和访问支持。所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
商务:17300950906
©2024-2026 源码跳动