美文网首页
containerd报错unable to load CRI i

containerd报错unable to load CRI i

作者: wwq2020 | 来源:发表于2025-12-29 09:22 被阅读0次

背景

containerd报错unable to load CRI image service plugin dependency: invalid cri image config: mirrors cannot be set when config_path is provided

containerd 2.x后,不是通过mirrors的方式来配置mirror,而是通过config_path的方式

解决

以docker.io为例
创建目录

mkdir -p /etc/containerd/certs.d/docker.io

在/etc/containerd/certs.d/docker.io目录下创建文件hosts.toml,内容如下

[host."https://docker.m.daocloud.io"]

源码

internal/cri/config/config_unix.go中

func DefaultImageConfig() ImageConfig {
    return ImageConfig{
        ...
        Registry: Registry{
            ConfigPath: "/etc/containerd/certs.d:/etc/docker/certs.d",
        },
        ...
    }
}

plugins/cri/images/plugin.go中

func init() {
    默认配置
    config := criconfig.DefaultImageConfig()
    ...
    验证配置
            if warnings, err := criconfig.ValidateImageConfig(ic.Context, &config); err != nil {
    ...
}

internal/cri/config/config.go中

验证配置
func ValidateImageConfig(ctx context.Context, c *ImageConfig) ([]deprecation.Warning, error) {
    ...
    由于ConfigPath默认就是非空,所以useConfigPath必定是true
    useConfigPath := c.Registry.ConfigPath != ""
    如果配置了Mirrors
    if len(c.Registry.Mirrors) > 0 {
        则爆粗
        if useConfigPath {
            return warnings, errors.New("`mirrors` cannot be set when `config_path` is provided")
        }
        ...
    }
    ...
}

相关文章

网友评论

      本文标题:containerd报错unable to load CRI i

      本文链接:https://www.haomeiwen.com/subject/obpyhstx.html