containerd配置HTTP私仓

1. 🛠️ 基础环境配置

📌 安装基础环境请参考:
[Ubuntu 22.04] 安装K8S基础环境准备脚本

2. 🐳 Docker安装

📌 docker安装请参考:
[Ubuntu 22.04] 安装docker,并设置镜像加速

3. 🚢 部署Harbor,HTTP访问

📌 [Ubuntu 22.04] 安装Harbor#HTTP方式

🔍 浏览器中输入:http://192.168.11.20,即可访问刚才部署的harbor

4. 📦 部署ContainerD

📌 containerd的安装请参考:
[Ubuntu 22.04] 安装containerd

5. 🔄 修改docker配置文件,向harbor中推入镜像

🎯 目标:向第三步部署的harbor仓库中推入镜像仓库

根据目前的环境,有两种方式可以向harbor中推入镜像。其一是通过dockerharbor中推入镜像仓库。其二是通过containerdharbor中推入镜像

由于目前我们对于containerd并不熟悉,因此我们先直接通过dockerharbor中推入镜像,由于我们自己搭建的harbor是私有仓库,并且是HTTP的方式,因此我们需要配置docker的配置文件。

你可以重新找一台机器安装docker做实验,或者直接使用harbor那台机器也可以,这里我直接使用harbor那台机器上的docker工具,向harbor推送镜像。

配置修改如下,主要是增加了insecure-registries配置,如果你的配置文件中包含其它的配置,请不要直接执行,否则会覆盖你的配置。;另外,请一定要注意80端口,这个不能省略,否则docker会以https的方式访问harbor

tee /etc/docker/daemon.json << 'EOF'
{
    "registry-mirrors": [
        "http://hub-mirror.c.163.com",
        "https://mirror.baidubce.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://registry.docker-cn.com",
        "https://dockerproxy.com",
        "https://ccr.ccs.tencentyun.com",
        "https://registry.cn-hangzhou.aliyuncs.com"
    ],
    "insecure-registries": ["192.168.11.20:80"]
}
EOF

systemctl restart docker.service

这里我随便推送harbor的一个镜像到我自己的harbor仓库当中,操作如下,第一步:重新打tag, 第二步:docker push这里需要注意的是,再推送镜像之前,一定要在登录harbor,提前建立仓库目录,否则推送会被拒绝,另外,静态的Tag所指向的仓库端口必须要显式指定80端口,否则默认使用443端口

root@harbor-http:~/harbor#
root@harbor-http:~/harbor#
root@harbor-http:~/harbor# cat /etc/docker/daemon.json
{
    "registry-mirrors": [
        "http://hub-mirror.c.163.com",
        "https://mirror.baidubce.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://registry.docker-cn.com",
        "https://dockerproxy.com",
        "https://ccr.ccs.tencentyun.com",
        "https://registry.cn-hangzhou.aliyuncs.com"
    ],
    "insecure-registries": ["192.168.11.20:80","192.168.11.30"]
}
root@harbor-http:~/harbor# doc
### 配置 Containerd 支持 HTTP 协议的库方法 为了使 Containerd 能够支持通过 HTTP 协议访问镜像仓库,需要对 Containerd配置文件进行修改。以下是详细的配置过程: #### 1. 修改 Configuration File Containerd配置文件通常位于 `/etc/containerd/config.toml` 或者 `/var/lib/containerd/config.toml` 中。具体路径取决于系统的安装方式。 打开配置文件后,找到 `[plugins."io.containerd.grpc.v1.cri".registry.mirrors]` 部分,并添加对应的 HTTP 库地址及其端点信息。例如,如果库的地址为 `10.226.130.228:5000`,则应按照以下格式进行配置[^2]: ```toml [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."10.226.130.228:5000"] endpoint = ["http://10.226.130.228:5000"] ``` 此处的关键在于将 `endpoint` 设置为带有 `http://` 前缀的形式,表明该连接不使用加密传输层安全(TLS)协议。 #### 2. 绕过 TLS 验证 除了显式声明 HTTP 地址外,还可以通过绕过 TLS 验证的方式实现相同目的。这种方法适用于那些无法更改客户端行为但仍需禁用安全性检查的情况。为此,在同一配置文件中增加如下条目[^4]: ```toml [plugins."io.containerd.grpc.v1.cri".registry.configs] [plugins."io.containerd.grpc.v1.cri".registry.configs."10.226.130.228:5000".tls] insecure_skip_verify = true ``` 请注意,虽然这种方式能够简化部署流程,但由于缺乏数据保护措施,仅建议用于开发或测试环境而非生产环境。 #### 3. 保存并应用新设置 完成编辑之后,请记得保存所做的改动并将它们反映到实际运行当中去。这一步骤包括两部分内容——重新加载守护进程以及验证其状态正常与否: - 执行命令以通知 systemd 更新最新参数设定: ```bash sudo systemctl restart containerd ``` - 检查服务是否已经成功启动并无任何异常记录存在其中: ```bash journalctl -u containerd --since today | grep error ``` 如果有错误消息显示出来,则可能意味着刚才的操作存在问题;反之如果没有输出结果的话即代表一切顺利运作着呢! --- ### 示例代码片段展示完整配置结构 下面给出一个完整的例子供参考学习之用: ```toml version = 2 [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."10.226.130.228:5000"] endpoint = ["http://10.226.130.228:5000"] [plugins."io.containerd.grpc.v1.cri".registry.configs] [plugins."io.containerd.grpc.v1.cri".registry.configs."10.226.130.228:5000".tls] insecure_skip_verify = true ``` 以上内容涵盖了所有必要字段定义说明以便更好地理解整体逻辑关系[^2][^4]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值