containerd设置http镜像加速的巨坑

8 阅读1分钟

首先,打开 /etc/containerd/config.toml

注意,你设置了config_path就不能设置mirror选项了

toml
 体验AI代码助手
 代码解读
复制代码
#设置config_path的路径,它一般用来存放证书
[plugins."io.containerd.grpc.v1.cri".registry]
      config_path = "/etc/containerd/certs.d"

创建目录 /etc/containerd/certs.d/域名/hosts.toml

server = "http://harbor.my.top"

#注意,这里一定要加http前缀以及80端口,一定!
[host."http://harbor.my.top:80"]
  capabilities = ["pull","push","resolve"]
  #如果你是https请求,你没有证书拿过来,那么就用这个
  #  网上其他网站都告诉你这是让你可以用http的
  #  但其实不是,这是跳过https的证书校验,不是让你能强制使用http的
  #skip_verify = true
  #ca=""

然后不需要重启containerd 然后需要先登录你的私人仓库,才能pull和push

外部使用 pull proxy/alpine:3.23 即可,如果想去掉前缀 那么应该使用

ini
 体验AI代码助手
 代码解读
复制代码
[host."http://harbor.deep-space.top:80/v2/proxy"]
  capabilities = ["pull","push","resolve"]
  #替换路径,外部就不用写proxy了,但是要加v2
  override_path = true

注意:如果你用的是k8s,那么每个node都需要去设置 并且k8s和ctr/nerdctl使用的凭证是不一样的 k8s需要使用

[plugins."io.containerd.grpc.v1.cri".registry.configs."harbor.my:80".auth]
             username = "admin"
             password = "xxx" #明文