当前位置: 首页 > news >正文

Containerd接入Harbor仓库

在使用容器时,避免不了会使用到私有仓库,一般都是采用 harbor 作为私有仓库,docker 对接 harbor 仓库非常简单,哪 containerd 如何对接 harbor 呢?

在内网使用 harbor 根据个人习惯,一般都是非 http 并且是通过IP 直接访问,如下:

harbor仓库地址为:http://192.168.199.102:80 ,containerd 如何上传或者下载镜像呢?

2.配置说明

2.1 生成配置文件

>mkdir -p /etc/containerd/ >containerd config default

> /etc/containerd/config.toml

2.2 修改配置

大概从144行开始 >vim +144 /etc/containerd/config.toml 144 [plugins."io.containerd.grpc.v1.cri".registry] 145 config_path = "/etc/containerd/certs.d" #修改该行的配置信息 ...

创建该目录

上面的目录+harbor仓库地址

>mkdir -p /etc/containerd/certs.d/192.168.199.102:80

编写 harbor 配置

>vim /etc/containerd/certs.d/192.168.199.102\:80/hosts.toml
server = "http://192.168.199.102:80"
[host."http://192.168.199.102:80"]capabilities = ["pull", "resolve", "push"]skip_verify = true

重启服务

>systemctl restart containerd

3.验证上传下载

3.1 准备镜像

首先,从网络上下载一个镜像

>nerdctl pull nginx:alpine
>nerdctl images
REPOSITORY    TAG       IMAGE ID        CREATED          PLATFORM       SIZE        BLOB SIZE
nginx         alpine    c94a22b036af    2 seconds ago    linux/amd64    42.7 MiB    16.0 MiB

为该镜像打TAG

>nerdctl tag nginx:alpine 192.168.199.102:80/library/nginx:alpine
>nerdctl images
REPOSITORY                          TAG       IMAGE ID        CREATED          PLATFORM       SIZE        BLOB SIZE
192.168.199.102:80/library/nginx    alpine    c94a22b036af    6 minutes ago    linux/amd64    42.7 MiB    16.0 MiB
nginx                               alpine    c94a22b036af    7 minutes ago    linux/amd64    42.7 MiB    16.0 MiB

3.2 登录harbor

>nerdctl login 192.168.199.102:80
Enter Username: admin
Enter Password:
WARNING: Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded

3.3 上传镜像

上传到 harbor 仓库

>nerdctl push 192.168.199.102:80/library/nginx:alpine
INFO[0000] pushing as a reduced-platform image (application/vnd.docker.distribution.manifest.list.v2+json, sha256:3d7805c209c8f28a172fc1b6adea4db8d68ca54d0e1696a655ef0c75333add45)
index-sha256:3d7805c209c8f28a172fc1b6adea4db8d68ca54d0e1696a655ef0c75333add45:    done           |++++++++++++++++++++++++++++++++++++++|
manifest-sha256:01ccf4035840dd6c25042b2b5f6b09dd265b4ed5aa7b93ccc4714027c0ce5685: done           |++++++++++++++++++++++++++++++++++++++|
config-sha256:8e75cbc5b25c8438fcfe2e7c12c98409d5f161cbb668d6c444e02796691ada70:   done           |++++++++++++++++++++++++++++++++++++++|
elapsed: 0.9 s                                                                    total:  18.0 K (20.0 KiB/s)

3.4 harbor仓库查看镜像

3.5 删除本地镜像

>nerdctl rmi 192.168.199.102:80/library/nginx:alpine nginx:alpine
>nerdctl images
REPOSITORY    TAG    IMAGE ID    CREATED    PLATFORM    SIZE    BLOB SIZE

3.6 启动容器

目前本地是没有镜像的,直接通过 nerdctl run 启动容器。当本地没有镜像时,会直接从 harbor 拉取镜像。

>nerdctl  images
REPOSITORY    TAG    IMAGE ID    CREATED    PLATFORM    SIZE    BLOB SIZE
>nerdctl run --name ngx -d -p 80:80 192.168.199.102:80/library/nginx:alpine
192.168.199.102:80/library/nginx:alpine:                                          resolved       |++++++++++++++++++++++++++++++++++++++|
index-sha256:3d7805c209c8f28a172fc1b6adea4db8d68ca54d0e1696a655ef0c75333add45:    done           |++++++++++++++++++++++++++++++++++++++|
manifest-sha256:01ccf4035840dd6c25042b2b5f6b09dd265b4ed5aa7b93ccc4714027c0ce5685: done           |++++++++++++++++++++++++++++++++++++++|
config-sha256:8e75cbc5b25c8438fcfe2e7c12c98409d5f161cbb668d6c444e02796691ada70:   done           |++++++++++++++++++++++++++++++++++++++|
layer-sha256:c23b4f8cf279507bb1dd3d6eb2d15ca84fac9eac215ab5b529aa8b5a060294c8:    done           |++++++++++++++++++++++++++++++++++++++|
layer-sha256:f56be85fc22e46face30e2c3de3f7fe7c15f8fd7c4e5add29d7f64b87abdaa09:    done           |++++++++++++++++++++++++++++++++++++++|
layer-sha256:2ce963c369bc5690378d31c51dc575c7035f6adfcc1e286051b5a5d9a7b0cc5c:    done           |++++++++++++++++++++++++++++++++++++++|
layer-sha256:59b9d2200e632e457f800814693b3a01adf09a244c38ebe8d3beef5c476c4c55:    done           |++++++++++++++++++++++++++++++++++++++|
layer-sha256:3e1e579c95fece6bbe0cb9c8c2949512a3f8caaf9dbe6219dc6495abb9902040:    done           |++++++++++++++++++++++++++++++++++++++|
layer-sha256:547a97583f72a32903ca1357d48fa302e91e8f83ffa18e0c40fd87adb5c06025:    done           |++++++++++++++++++++++++++++++++++++++|
layer-sha256:1f21f983520d9a440d410ea62eb0bda61a2b50dd79878071181b56b82efa9ef3:    done           |++++++++++++++++++++++++++++++++++++++|
elapsed: 2.1 s                                                                    total:  16.0 M (7.6 MiB/s)
bfd2c9c9078966b6709f457586da83e604eb6c05055cc6a04febe8659d47bfb1>nerdctl images
REPOSITORY                          TAG       IMAGE ID        CREATED           PLATFORM       SIZE        BLOB SIZE
192.168.199.102:80/library/nginx    alpine    3d7805c209c8    28 seconds ago    linux/amd64    42.7 MiB    16.0 MiB
>nerdctl  ps -a
CONTAINER ID    IMAGE                                      COMMAND                   CREATED           STATUS    PORTS                 NAMES
bfd2c9c90789    192.168.199.102:80/library/nginx:alpine    "/docker-entrypoint.…"    29 seconds ago    Up        0.0.0.0:80->80/tcp    ngx

3.7 验证查看

>curl -I localhost
HTTP/1.1 200 OK
Server: nginx/1.23.4
Date: Thu, 06 Apr 2023 06:41:25 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Tue, 28 Mar 2023 17:09:24 GMT
Connection: keep-alive
ETag: "64231f44-267"
Accept-Ranges: bytes

OK,nginx启动成功。

4.配置镜像加速

通过上面的配置,不难启发我们配置国内镜像加速的方式,例如为 docker.io 配置镜像加速

>mkdir -p /etc/containerd/docker.io
>vim /etc/containerd/docker.io/hosts.toml
server = "https://docker.io"
[host."https://xxx.mirror.aliyuncs.com"]  #注册阿里云可查看个人加速源

重启服务

>systemctl restart containerd

测试拉取镜像

>nerdctl pull mysql
>nerdctl  images
REPOSITORY    TAG                 IMAGE ID        CREATED           PLATFORM       SIZE         BLOB SIZE
busybox       stable              5acba83a746c    17 minutes ago    linux/amd64    1.2 MiB      758.9 KiB
java          8u111-jdk-alpine    d49bf8c44670    15 minutes ago    linux/amd64    140.3 MiB    49.3 MiB
mysql         latest              e9027fe4d91c    2 seconds ago     linux/amd64    504.6 MiB    144.4 MiB
nginx         alpine              eb05700fe7ba    23 minutes ago    linux/amd64    25.2 MiB     9.7 MiB

参考:

https://www.cnblogs.com/hukey/p/17293126.html

docker中安装最新版私有镜像仓库harbor(v2.8.2 ) - 知乎

https://www.cnblogs.com/birkhoffxia/articles/17547907.html

harbor安装_凤凰涅槃的技术博客_51CTO博客

https://www.cnblogs.com/qfdxxdr/p/16384133.html

相关文章:

Containerd接入Harbor仓库

在使用容器时,避免不了会使用到私有仓库,一般都是采用 harbor 作为私有仓库,docker 对接 harbor 仓库非常简单,哪 containerd 如何对接 harbor 呢? 在内网使用 harbor 根据个人习惯,一般都是非 http 并且是…...

Angular 组件介绍及使用(一)

Angular 概述 Angular 是一个用于构建 Web 应用程序的开源前端框架,由 Google 团队开发和维护。它采用 TypeScript 编程语言,并借鉴了一些传统的 Web 开发模式和最佳实践,提供了强大而灵活的工具和特性。 以下是 Angular 的一些概述要点&am…...

2023.11.13 hive数据仓库之分区表与分桶表操作,与复杂类型的运用

目录 0.hadoop hive的文档 1.一级分区表 2.一级分区表练习2 3.创建多级分区表 4.分区表操作 5.分桶表 6. 分桶表进行排序 7.分桶的原理 8.hive的复杂类型 9.array类型: 又叫数组类型,存储同类型的单数据的集合 10.struct类型: 又叫结构类型,可以存储不同类型单数据的集合…...

Spring Cloud学习(七)【Docker 容器】

文章目录 初识 DockerDocker 介绍Docker与虚拟机Docker架构安装 Docker Docker 基本操作镜像相关命令容器相关命令数据卷 Dockerfile 自定义镜像镜像结构Dockerfile DockerComposeDockerCompose介绍安装DockerCompose Docker镜像仓库常见镜像仓库服务私有镜像仓库 初识 Docker …...

好题分享(2023.11.5——2023.11.11)

目录 前情回顾: 前言: 题目一:补充《移除链表元素》 题目二:《反转链表》 解法一:三指针法 解法二:头插法 题目三: 《相交链表》 题目四:《合并两个有序数列》 题目五&…...

第二章 03Java基础-IDEA相关叙述

文章目录 前言一、IDEA概述二、IDEA下载和安装三、IDEA项目结构介绍四、IDEA的项目和模块操作总结前言 今天我们学习Java基础,IDEA下载以及相关配置和基础使用方法 一、IDEA概述 1.IDEA全称IntelliJ IDEA,是用于Java语言开发的集成工具,是业界公认的目前用于Java程序开发最…...

第三阶段第二章——Python高阶技巧

时间过得很快,这么快就来到了最后一篇Python基础的学习了。话不多说直接进入这最后的学习环节吧!!! 期待有一天 春风得意马蹄疾,一日看尽长安花 o(* ̄︶ ̄*)o 1.闭包 什么是闭包? 答…...

【Git】Git分支与应用分支Git标签与应用标签

一,Git分支 1.1 理解Git分支 在 Git 中,分支是指一个独立的代码线,并且可以在这个分支上添加、修改和删除文件,同时作为另一个独立的代码线存在。一个仓库可以有多个分支,不同的分支可以独立开发不同的功能&#xff0…...

本地PHP搭建简单Imagewheel私人云图床,在外远程访问——“cpolar内网穿透”

文章目录 1.前言2. Imagewheel网站搭建2.1. Imagewheel下载和安装2.2. Imagewheel网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar临时数据隧道3.2.Cpolar稳定隧道(云端设置)3.3.Cpolar稳定隧道(本地设置) 4.公网访问测…...

HCIP---OSPF思维导图

...

Python实现猎人猎物优化算法(HPO)优化XGBoost回归模型(XGBRegressor算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的…...

pandas读写json的知识点

pandas对象可以直接转换为json,使用to_json即可。里面的orient参数很重要,可选值为columns,index,records,values,split,table A B C x 1 4 7 y 2 5 8 z 3 6 9 In [236]: dfjo.to_json(orient"columns") Out[236]: {"A":{"x&qu…...

图论——Dijkstra算法matlab代码

Dijkstra算法步骤 (1)构造邻接矩阵 (2)定义起始点 (3)运行代码 M[ 0 5 9 Inf Inf Inf InfInf 0 Inf Inf 12 Inf InfInf 3 0 15 Inf 23 InfInf 6 …...

[MySQL] MySQL表的基础操作

文章目录 一、创建表 1、1 SQL语法 1、2 实例演示 二、查询表 三、修改表 3、1 修改表名字 3、2 新增列(字段) 3、3 修改列类型 3、4 修改列名 3、5 删除表 四、总结 🙋‍♂️ 作者:Ggggggtm 🙋‍♂️ 👀 专…...

SQL 部分解释。

这段SQL代码的主要作用是从V_order_L表中查询数据,并与V_AATB1DU_F52_M表进行左连接。查询的结果会按照订单时间(orderTime)、POS代码(posCode)和区间名称(f.DName)进行分组。 具体来说&#xf…...

利用LangChain实现RAG

检索增强生成(Retrieval-Augmented Generation, RAG)结合了搜寻检索生成能力和自然语言处理架构,透过这个架构,模型可以从外部知识库搜寻相关信息,然后使用这些信息来生成response。要完成检索增强生成主要包含四个步骤…...

零基础学习Matlab,适合入门级新手,了解Matlab

一、认识Matlab Matlab安装请参见博客 安装步骤 1.界面 2.清空环境变量及命令 (1)clear all :清除Workspace中的所有变量 (2)clc:清除Command Window中的所有命令 二、Matlab基础 1.变量命名规则 &a…...

CCF ChinaSoft 2023 论坛巡礼 | 自动驾驶仿真测试论坛

2023年CCF中国软件大会(CCF ChinaSoft 2023)由CCF主办,CCF系统软件专委会、形式化方法专委会、软件工程专委会以及复旦大学联合承办,将于2023年12月1-3日在上海国际会议中心举行。 本次大会主题是“智能化软件创新推动数字经济与社…...

vue封装useWatch hook支持停止监听和重启监听功能

import { watch, reactive } from vue;export function useWatch(source, cb, options) {const state reactive({stop: null});function start() {state.stop watch(source, cb, options);}function stop() {state.stop();state.stop null;}// 返回一个对象,包含…...

智能配方颗粒管理系统解决方案,专业实现中医药产业数字化-亿发

“中药配方颗粒”,又被称为免煎中药,源自传统中药饮片,经过提取、分离、浓缩、干燥、制粒、包装等工艺加工而成。这种新型配方药物完整保留了原中药饮片的所有特性。既能满足医师的辨证论治和随症加减需求,同时具备强劲好人高效的…...

车辆状态估计模型EKF/AEKF 基于Carsim和simulink联合仿真,在建立车辆三自由...

车辆状态估计模型EKF/AEKF 基于Carsim和simulink联合仿真,在建立车辆三自由度模型(自行车模型加纵向)的基础上,分别使用EKF和AEKF算法对纵向车速,横摆角速度,质心侧偏角进行估计,并进行结果对比。 自适应扩展卡尔曼滤…...

考虑气电联合需求响应的气电综合能源配网系统协调优化运行代码功能说明

考虑气电联合需求响应的 气电综合能源配网系统协调优化运行 该文提出气电综合能源配网系统最优潮流的凸优化方法,即利用二阶锥规划方法对配电网潮流方 程约束进行处理,并提出运用增强二阶锥规划与泰勒级数展开相结合的方法对天然气潮流方程约束进行处理&…...

告别官方驱动:深度解读ES7210寄存器,打造你自己的音频采集库(ESP32平台)

告别官方驱动:深度解读ES7210寄存器,打造你自己的音频采集库(ESP32平台) 在嵌入式音频开发领域,ES7210作为一款高性能多通道ADC芯片,被广泛应用于智能音箱、会议系统等场景。然而,官方驱动往往封…...

终极Qwen-Agent DevOps集成指南:AI助手的持续集成与部署全流程解析

终极Qwen-Agent DevOps集成指南:AI助手的持续集成与部署全流程解析 【免费下载链接】Qwen-Agent Agent framework and applications built upon Qwen>3.0, featuring Function Calling, MCP, Code Interpreter, RAG, Chrome extension, etc. 项目地址: https:/…...

从硬件视角看RISC-V FENCE:流水线、Cache与指令保序的底层实现

从硬件视角看RISC-V FENCE:流水线、Cache与指令保序的底层实现 在处理器设计中,内存访问的顺序性是一个看似简单却充满挑战的问题。想象一下,当你在厨房同时操作多个灶台时,虽然每个锅里的食材都在按计划烹饪,但火候的…...

如何高效提取Android OTA包:payload-dumper-go完整使用指南

如何高效提取Android OTA包:payload-dumper-go完整使用指南 【免费下载链接】payload-dumper-go an android OTA payload dumper written in Go 项目地址: https://gitcode.com/gh_mirrors/pa/payload-dumper-go 在Android系统开发和维护过程中,处…...

极验滑动验证码自动化实战:背景提取、缺口定位与Playwright滑动模拟

滑动验证码自动化实战:背景提取、缺口定位与Playwright滑动模拟 一、前言 在爬虫自动化、Web端自动化测试、业务流程自动化等场景中,人机验证是保障系统安全的重要防线,也是自动化流程中最常见的“拦路虎”。极验(Geetest&#…...

python cx_freeze

# 关于 PyInstaller,一位 Python 老手的随想 最近在整理一些旧项目,又用到了 PyInstaller 这个工具。说起来,它算是 Python 开发中一个既熟悉又容易被忽视的存在。很多开发者第一次接触它,往往是为了把写好的脚本发给不会装 Pytho…...

共享单车智能通信系统架构与技术解析

1. 共享单车通信系统架构解析共享单车的智能通信系统主要由四大核心模块构成:智能车锁、供电系统、通信模块和云端平台。这套系统设计最精妙之处在于,它完美结合了移动通信技术、蓝牙短距传输和GPS定位技术,构建了一个稳定可靠的物联网应用场…...

SecGPT-14B知识库增强:让OpenClaw安全决策更精准

SecGPT-14B知识库增强:让OpenClaw安全决策更精准 1. 为什么需要知识库增强的OpenClaw 去年我在尝试用OpenClaw自动化处理安全日志时,发现一个尴尬的问题:当模型遇到CVE漏洞编号时,经常给出模棱两可的判断。比如看到"CVE-20…...