Containerd Docker 镜像源配置教程
适用于使用 containerd 的系统,如 Kubernetes(k3s / cri-o)或自建 containerd 环境,支持通过配置专属镜像域名专属域名提升镜像拉取速度、可控性与可用性。本教程同时支持 containerd v1.x 和 v2.x 版本,请根据您的版本选择对应的配置方式。
1适用版本
本手册适用于以下 containerd 版本,请先确认您的版本:
| 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 节点):
💡重要提示:请将配置中的 *** 替换为您的专属域名前缀。例如,如果您的专属域名为 123abc.xuanyuan.run,则应将 *** 替换为 123abc。
说明:多个 endpoint 可按优先级排列,containerd 会依次尝试,直到成功。
最佳实践:docker.io 的配置中,我们添加了 https://registry-1.docker.io 作为 fallback endpoint。这样即使专属域名配置有误或不可用,containerd 仍可回退到官方源,确保服务不会中断。
注意:以上配置已包含常用镜像仓库,如果您的项目使用其他镜像仓库,请参考上述格式自行添加配置。
扩展配置示例:
4TLS 注意事项(v1.x)
如果因偶发情况触发证书验证失败。可使用以下配置忽略 TLS 校验:
[plugins."io.containerd.grpc.v1.cri".registry.configs."***.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常见问题
- config.toml 配置无效或路径错误
- config.toml 配置中没有配置对应的仓库
- 专属域名没有流量
- 确认文件路径和语法,或重建配置文件
- journalctl -u containerd -f 观察报错信息,看看具体是哪个仓库链接不上,配置到 config.toml 中
- 前往充值页面充值流量包
- hosts.toml 文件路径错误或不存在
- hosts.toml 配置语法错误
- 未为对应的镜像仓库创建 hosts.toml 文件
- 使用了错误的配置方式(v2.x 不能使用 v1.x 的 config.toml 配置)
- 确认 hosts.toml 文件路径正确
- 检查 hosts.toml 文件语法是否正确
- 为每个需要访问的镜像仓库创建对应的目录和 hosts.toml 文件
- 确认使用的是 v2.x 配置方式,参考上方的 v2.x 配置指南
- 使用了 v1.x 的 config.toml 配置方式(v2.x 不支持)
- hosts.toml 文件路径或格式错误
- 确认 containerd 版本,v2.x 必须使用 hosts.toml 配置
- 参考上方的 v2.x 配置指南重新配置
轩辕镜像配置手册
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
Docker 配置
登录仓库拉取
通过 Docker 登录认证访问私有仓库
专属域名拉取
无需登录使用专属域名
K8s Containerd
Kubernetes 集群配置 Containerd
K3s
K3s 轻量级 Kubernetes 镜像加速
Dev Containers
VS Code Dev Containers 配置
Podman
Podman 容器引擎配置
Singularity/Apptainer
HPC 科学计算容器配置
其他仓库配置
ghcr、Quay、nvcr 等镜像仓库
Harbor 镜像源配置
Harbor Proxy Repository 对接专属域名
Portainer 镜像源配置
Portainer Registries 加速拉取
Nexus 镜像源配置
Nexus3 Docker Proxy 内网缓存
系统配置
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
镜像拉取常见问题
使用与功能问题
错误码与失败问题
docker pull 提示 manifest unknown 怎么办?
manifest unknown
docker pull 提示 no matching manifest 怎么办?
no matching manifest(架构)
镜像已拉取完成,却提示 invalid tar header 或 failed to register layer 怎么办?
invalid tar header(解压)
Docker pull 时 HTTPS / TLS 证书验证失败怎么办?
TLS 证书失败
Docker pull 时 DNS 解析超时或连不上仓库怎么办?
DNS 超时
Docker 拉取出现 410 Gone 怎么办?
410 Gone 排查
出现 402 或「流量用尽」提示怎么办?
402 与流量用尽
Docker 拉取提示 UNAUTHORIZED(401)怎么办?
401 认证失败
遇到 429 Too Many Requests(请求太频繁)怎么办?
429 限流
docker login 提示 Cannot autolaunch D-Bus,还算登录成功吗?
D-Bus 凭证提示
为什么会出现「单层超过 20GB」或 413,无法加速拉取?
413 与超大单层
账号 / 计费 / 权限
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务