Containerd 镜像配置
配置 Containerd 镜像加速域名,提高镜像拉取速度
说明
不推荐在 k8s 网络配置前加速,可能会导致无法拉取镜像(原因可能是镜像的原因,或者是配置的原因,可以考虑事先或报错时手动拉取镜像)
开始使用 Containerd
Containerd 配置 Docker 加速镜像
crictl 用户指南
Containerd hosts 配置
- 在
[plugins."io.containerd.grpc.v1.cri".registry]
中配置config_path
时,需要 文件夹、文件 必须存在,否则命令无法运行 - 在
[plugins."io.containerd.grpc.v1.cri".registry]
中配置config_path
、 在[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
中配置域名
对于 crictl 是等效的
- 在
配置 crictl
编辑
/etc/containerd/config.toml
文件shellvim /etc/containerd/config.toml
在
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
后面添加镜像,注意前面的缩进(空格),配置 docker.io 的示例如果
/etc/containerd/config.toml
配置很少,可能需要使用命令containerd config default
生成默认配置,替换原始的/etc/containerd/config.toml
文件(慎重操作,注意备份历史配置文件)shell[plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] # 根据需要,可填写多个,如:["https://hnkfbj7x.mirror.aliyuncs.com", "https://registry-1.docker.io"] endpoint = ["https://hnkfbj7x.mirror.aliyuncs.com"]
重启服务
shellsystemctl restart containerd
检查
crictl
配置查看是否配置 crictl
shellcat /etc/crictl.yaml
如果没有配置,则执行命令进行配置
shell# 开启 crictl 配置 # 安装完 k8s 后,才有 crictl 命令 # 参考: # GitHub:https://github.com/containerd/containerd/blob/main/docs/cri/crictl.md # 作者镜像仓库:https://framagit.org/mirrors-github/containerd/containerd/-/blob/main/docs/cri/crictl.md # 生成配置文件 cat <<EOF > /etc/crictl.yaml runtime-endpoint: unix:///run/containerd/containerd.sock image-endpoint: unix:///run/containerd/containerd.sock timeout: 10 debug: true EOF # 查看生成的配置文件 cat /etc/crictl.yaml
查看配置是否生效
shellcrictl info
使用
crictl
测试shell# 拉取镜像测试 crictl pull docker.io/library/maven:3.6.3-openjdk-17 # 查看拉取的结果 crictl image
配置 ctr
、crictl
以加速 docker.io 为例
创建文件夹
shellmkdir -p /etc/containerd/certs.d/docker.io
创建配置文件
shellcat <<EOF > /etc/containerd/certs.d/docker.io/hosts.toml server = "https://docker.io" [host."https://hnkfbj7x.mirror.aliyuncs.com"] capabilities = ["pull", "resolve"] # 跳过证书验证 skip_verify = true EOF # 查看生成的配置文件 cat /etc/crictl.yaml
使用
ctr
测试shell# 拉取镜像 ctr --debug i pull --hosts-dir "/etc/containerd/certs.d" docker.io/library/maven:3.6.3-jdk-8 # 查看镜像 # ctr i list
编辑
/etc/containerd/config.toml
文件,使crictl
命令也能生效shellvim /etc/containerd/config.toml
修改
[plugins."io.containerd.grpc.v1.cri".registry]
的config_path
shell[plugins."io.containerd.grpc.v1.cri".registry] # 配置 config_path 时,需要 文件夹、文件 必须存在,否则命令无法运行 # plugins."io.containerd.grpc.v1.cri".registry 中的 config_path 与 plugins."io.containerd.grpc.v1.cri".registry.mirrors 对于 crictl 是等效的 config_path = "/etc/containerd/certs.d"
重启服务
shellsystemctl restart containerd
检查
crictl
配置查看是否配置 crictl
shellcat /etc/crictl.yaml
如果没有配置,则执行命令进行配置
shell# 开启 crictl 配置 # 安装完 k8s 后,才有 crictl 命令 # 参考: # GitHub:https://github.com/containerd/containerd/blob/main/docs/cri/crictl.md # 作者镜像仓库:https://framagit.org/mirrors-github/containerd/containerd/-/blob/main/docs/cri/crictl.md # 生成配置文件 cat <<EOF > /etc/crictl.yaml runtime-endpoint: unix:///run/containerd/containerd.sock image-endpoint: unix:///run/containerd/containerd.sock timeout: 10 debug: true EOF # 查看生成的配置文件 cat /etc/crictl.yaml
查看配置是否生效
shellcrictl info
使用
crictl
测试shell# 拉取镜像测试 crictl pull docker.io/library/nginx:1.25.1 # 查看拉取的结果 crictl image