containerd

v1.7.5

harbor

v2.14.1

修改/etc/containerd/config.toml配置文件

      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
        # 如下这些仓库可以作为公共仓库使用
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
            endpoint = ["https://docker.mirrors.ustc.edu.cn","http://hub-mirror.c.163.com"]
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"]
            endpoint = ["https://gcr.mirrors.ustc.edu.cn"]
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]
            endpoint = ["https://gcr.mirrors.ustc.edu.cn/google-containers/"]
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."quay.io"]
            endpoint = ["https://quay.mirrors.ustc.edu.cn"]
        # 内部私有仓库配置
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."www.myharbor.com"]
            endpoint = ["https://www.myharbor.com/"]

      [plugins."io.containerd.grpc.v1.cri".registry.configs]
        # 内部私有仓库认证信息
        [plugins."io.containerd.grpc.v1.cri".registry.configs."www.myharbor.com"] # 这行不确定要不要写上
          [plugins."io.containerd.grpc.v1.cri".registry.configs."www.myharbor.com".tls]
            insecure_skip_verify = false # 是否跳过证书认证
            ca_file = "/etc/containerd/www.myharbor.com/ca.crt" # CA 证书 
          [plugins."io.containerd.grpc.v1.cri".registry.configs."www.myharbor.com".auth]
            username = "test" # 在harbor里单独创建的用户,授权访问指定项目
            password = "Test123456"

如果镜像仓库配置了双向认证,那么需要为 containerd 配置 ssl 证书用于 镜像仓库对 containerd 做认证。

      [plugins."io.containerd.grpc.v1.cri".registry.configs]
        # 内部私有仓库认证信息
        [plugins."io.containerd.grpc.v1.cri".registry.configs."www.myharbor.com"] # 这行不确定要不要写上
          [plugins."io.containerd.grpc.v1.cri".registry.configs."www.myharbor.com".tls]
            insecure_skip_verify = false # 是否跳过证书认证
            ca_file = "/etc/containerd/www.myharbor.com/ca.crt" # CA 证书
            cert_file = "/etc/containerd/www.myharbor.com/www.myharbor.com.crt" # harbor 证书
            key_file = "/etc/containerd/www.myharbor.com/www.myharbor.com.key" # harbor 私钥 
          [plugins."io.containerd.grpc.v1.cri".registry.configs."www.myharbor.com".auth]
            username = "test" # 在harbor里单独创建的用户,授权访问指定项目
            password = "Test123456

Containerd 与 docker 都有默认仓库,均为 docker.io 。如果配置中未指定 mirror 为 docker.io,containerd 后会自动加载 docker.io 配置。与 docker 不同的是,containerd 可以修改 docker.io 对应的 endpoint(默认为 https://registry-1.docker.io ) ,而 docker 无法修改。

Docker 中可以通过 registry-mirrors 设置镜像加速地址。如果 pull 的镜像不带仓库地址(项目名+镜像名:tag),则会从默认镜像仓库去拉取镜像。如果配置了镜像加速地址,会先访问镜像加速仓库,如果没有返回数据,再访问默认的镜像仓库。

Containerd 目前没有直接配置镜像加速的功能,但 containerd 中可以修改 docker.io 对应的 endpoint,所以可以通过修改 endpoint 来实现镜像加速下载。因为 endpoint 是轮询访问,所以可以给 docker.io 配置多个仓库地址来实现 加速地址+默认仓库地址。

如上就是上文配置那些公共仓库的缘由。

参考文章链接:

https://www.cnblogs.com/hahaha111122222/p/16419768.html