Docker:Harbor 私有仓库迁移
Harbor 私有仓库迁移
一.私有仓库迁移的介绍
1.为何要对Harbor 私有仓库的迁移
(1)硬件升级或更换:如果源 Harbor 在旧的硬件设备上运行,并且计划将其迁移到新的硬件设备上,那么需要执行迁移操作。
(2)数据中心迁移:当需要将 Harbor 私有仓库从一个数据中心迁移到另一个数据中心时,例如迁移到不同的地理位置或云服务提供商的平台,迁移操作将是必需的。
(3)版本升级:当计划升级 Harbor 版本时,需要进行迁移操作以保留现有的私有仓库数据和设置。
(4)容量扩展:如果源 Harbor 的存储空间已经不足,或者需要将 Harbor 扩展到更大的存储系统上,那么迁移操作是必要的。
总:通过进行 Harbor 私有仓库的迁移操作,可以确保将存储的镜像、仓库配置和认证信息等重要数据安全地迁移到新的环境中,以保证 Harbor 的正常运行和用户访问的连续性。此外,在迁移过程中可以对旧的配置进行优化和调整,提高 Harbor 的性能和可靠性。
2.Harbor 私有仓库的迁移特点
(1)镜像迁移:Harbor 私有仓库是用来存储 Docker 镜像的,迁移操作主要涉及将源仓库中的镜像迁移到目标仓库中。这是迁移过程的核心部分,需要保证镜像的完整性和正确性。
(2)配置文件迁移:迁移 Harbor 还涉及将源仓库的配置文件迁移到目标仓库中,以确保在目标环境中正确配置相应的参数。
(3)认证和授权信息迁移:私有仓库可能涉及用户认证和授权机制,迁移过程中需要保证用户和权限信息的迁移,以便用户在目标环境中正常访问和管理仓库。
(4)数据一致性和可用性:迁移过程中,需要确保迁移的镜像和相关数据在源仓库和目标仓库之间的一致性和可用性。这可以通过对迁移过程进行验证和测试来实现。
(5)同步迁移和增量迁移:可以根据迁移需求选择同步迁移或增量迁移的方式。同步迁移是将整个仓库数据一次性迁移到目标环境中,适用于大规模迁移。增量迁移是将只增量部分的镜像和数据迁移到目标环境中,适用于部分镜像的迁移或者迁移时间较长的情况。
总:Harbor 私有仓库的迁移涉及到镜像、配置文件、认证和授权信息等的迁移,需要保证数据的一致性和可用性,同时需要选择合适的迁移方式和进行验证和测试,以保证迁移的成功和稳定性。
3. Harbor 私有仓库的迁移注意要点
(1)目标环境的网络和存储条件是否满足 Harbor 所需的条件。
(2)迁移的 Docker 镜像数量和大小,以及所需要的时间和带宽。
(3)是否需要对 Harbor 配置文件进行更改,以适应新环境中的不同配置。
(4)用户访问新的容器镜像仓库时,是否会对应用程序或脚本造成影响。
二.私有仓库迁移配置
主机 | IP地址 | 主要软件 |
---|---|---|
服务端1 | 192.168.27.21 | docker、docker-compose 、harbor-offline-v1.1.2 |
服务端2 | 192.168.27.20 | docker、docker-compose 、harbor-offline-v1.1.2 |
客户端 | 192.168.27.22 | docker |
1.源Harbor配置(192.168.27.21)
此处配置参考https://blog.csdn.net/weixin_58580419/article/details/132537214?spm=1001.2014.3001.5502
(1)接着以下操作查看容器状况及是否可以登录 Harbor WEB UI 界面
#关闭防火墙
systemctl stop firewalld
setenforce 0
cd /usr/local/harbor/
#查看容器的启动状况,如不是up状态需手动启动
docker-compose ps
docker-compose up
#查看相关容器是否启动,若未启动,需手动启动
docker ps -a
docker start 容器ID
#网页测试是否正常并登录查看源harbor已有的镜像
http://192.168.27.21
测试登录私有仓库是否正常并查看相关镜像
docker login -u admin -p Harbor12345 http://127.0.0.1
docker images
2.客户端配置(192.168.27.22)
(1)查看客户端状态
#关闭防火墙
systemctl stop firewalld
setenforce 0
此处配置参考https://blog.csdn.net/weixin_58580419/article/details/132537214?spm=1001.2014.3001.5502
接着以下操作查看容器是否可以登录到harbor端的私有仓库
docker login -u admin -p Harbor12345 http://192.168.27.21
3.新harbor服务器配置(192.168.198.12)
(1)安装docker容器并下载centos7镜像
#关闭防火墙
systemctl stop firewalld.service
setenforce 0
#修改新harbor主机名,区分新旧
hostnamectl set-hostname harbor01
su
#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
#设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装 Docker-CE并设置为开机自动启动
yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker.service
systemctl enable docker.service
docker pull centos:7
(2)部署docker-compose
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#下载docker-compose包
chmod +x /usr/local/bin/docker-compose
#添加权限
docker-compose --version
#查看版本
(3)部署Harbor服务
cd /opt
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
#将harbor压缩包传到/opt目录下,解压到/usr/local目录下
#此处可直接将旧的配置文件发过来,也可自己再手动配置
cp /usr/local/harbor/harbor.cfg harbor.cfg.bak
vim /usr/local/harbor/harbor.cfg
#修改harbor配置文件内容如下
hostname = 192.168.27.20
#第5行修改,设置为Harbor服务器的IP地址或者域名
harbor_admin_password = Harbor12345
第59行指定管理员的初始密码,默认的用户名/密码是admin/Harbor12345可不修改,保存退出
cd /usr/local/harbor/
./prepare
./install.sh
#进入harbor目录执行脚本检查安装harbor
docker-compose ps
#登录测试,查看并未有镜像
http://192.168.27.20
4.数据迁移
(1)Harbor迁移需要迁移镜像和日志(192.168.198.11)
#在源harbor上面查看镜像存储路径和日志存储路径
cd /usr/local/harbor
#在目录打开docker-compose.yuml文件
vim docker-compose.yuml
#进入两个目录中打包所有的资源
cd /data/registry/
tar -cf new.tar.gz ./*
cd /data/database/
tar -cf new1.tar.gz ./*
#将打包的镜像和日志移到新的harbor上
cd /data/registry/
scp new.tar.gz 192.168.27.20:/data/registry/
cd /data/database/
scp new1.tar.gz 192.168.27.20:/data/database/
(2)新的Harbor(192.168.27.20)
#进入相关目录将其解压
cd /data/registry/
tar -xvf new.tar.gz
cd /data/database/
tar -xvf new1.tar.gz
#解压后重启
cd /usr/local/harbor/
docker-compose restart
#登录查看是否已存在
http://192.168.27.20
已存在192.168.27.21上的镜像及日志
(3)客户端登录新的Harbor(192.168.27.22)
#进入配置文件修改地址
vim /usr/lib/systemd/system/docker.service
#第13行
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.27.20 --containerd=/run/containerd/containerd.sock
#重启
systemctl daemon-reload
systemctl restart docker.service
#登录新的Harbor,登录成功
docker login -u admin -p Harbor12345 http://192.168.27.20
docker images
#测试在源Harbor上面创建的用户登录,登录成功
docker login -u ambrose -p Harbor12345 http://192.168.27.21
相关文章:

Docker:Harbor 私有仓库迁移
Harbor 私有仓库迁移 一.私有仓库迁移的介绍 1.为何要对Harbor 私有仓库的迁移 (1)硬件升级或更换:如果源 Harbor 在旧的硬件设备上运行,并且计划将其迁移到新的硬件设备上,那么需要执行迁移操作。 (2&…...

(六)k8s实战-存储管理
一、Volumes 1、HostPath 【使用场景:容器目录 挂载到 主机目录】 【可以持久化到主机上】 将节点上的文件或目录挂载到 Pod 上,此时该目录会变成持久化存储目录,即使 Pod 被删除后重启,也可以重新加载到该目录,该目…...

ChatGPT Prompting开发实战(二)
一、基于LangChain源码react来解析prompt engineering 在LangChain源码中一个特别重要的部分就是react,它的基本概念是,LLM在推理时会产生很多中间步骤而不是直接产生结果,这些中间步骤可以被用来与外界进行交互,然后产生new con…...

Android屏幕适配(5) — 最小宽度smallWidth适配
概述 最小宽度smallWidth适配实现屏幕适配方案 详细 前言 在之前的文章中,我们讲到了Android屏幕适配的一些知识,大家感兴趣的话可参考Android屏幕适配(1) — 概念解释Android屏幕适配(2) — drawable与mipmapAndroid屏幕适配(3) — 资源文件夹命名与…...

详细介绍如何基于ESP32实现低功耗的电子纸天气显示器--附完整源码
实现界面展示 这是一款天气显示器,由支持 wifi 的 ESP32 微控制器和 7.5 英寸电子纸(又名电子墨水)显示器供电。当前和预测的天气数据是从 OpenWeatherMap API 获取的。传感器为显示屏提供准确的室内温度和湿度。 该项目在睡眠时消耗约 14μA,在约 10 秒的清醒期…...

DC电源模块不同的尺寸可以适应实际应用场景
BOSHIDA DC电源模块不同的尺寸可以适应实际应用场景 DC电源模块是现代电子设备的必备部件之一,其可提供稳定的直流电源,保证电子设备正常运行。DC电源模块尺寸的选择直接影响到其适应的应用场景及其性能表现。本文将从尺寸方面分析DC电源模块的适应性&a…...
@XmlType,@XmlRootElement,@XmlAttribute的作用与区别
XmlType、XmlRootElement 和 XmlAttribute 都是 Java 标准库中 javax.xml.bind.annotation 包提供的注解,用于在使用 JAXB(Java Architecture for XML Binding)或其他 XML 绑定技术时,控制 Java 类与 XML 数据之间的映射关系。 它…...

安装虚拟机
软硬件准备 软件:推荐使用VMwear,我用的是VMwear 12 镜像:CentOS7 ,如果没有镜像可以在官网下载 :http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1804.iso 硬件:因为是在宿主机上运行虚拟…...

(动态规划) 剑指 Offer 48. 最长不含重复字符的子字符串 ——【Leetcode每日一题】
❓剑指 Offer 48. 最长不含重复字符的子字符串 难度:中等 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为…...

【文心一言】如何申请获得体验资格,并简单使用它的强大功能
目录 一、文心一言1.1、它能做什么1.2、技术特点1.3、申请方法 二、功能体验2.1、文心一言2.2、写冒泡排序代码 测试代码2.3、画一个爱心2.4、画一个星空 三、申请和通过3.1、申请时间3.2、通过时间 文心一言,国内首个大型人工智能对话模型,发布已经快一…...

1. 卷积原理
① 卷积核不停的在原图上进行滑动,对应元素相乘再相加。 ② 下图为每次滑动移动1格,然后再利用原图与卷积核上的数值进行计算得到缩略图矩阵的数据,如下图右所示。 import torch import torch.nn.functional as Finput torch.tensor([[1, 2…...

pandas读取excel,再写入excel
需求是这样的,从一个表读取数据,然后每次执行创建一个新表将值写入 读取这个表 写入到这个表 分别对应的是e、h列数据,代码如下: import pandas as pd import openpyxl import datetime dfpd.read_excel(rC:\Users\admin\Deskt…...

【React学习】—React中的事件绑定(八)
【React学习】—React中的事件绑定(八) 一、原生JS <body><button id"btn1">按钮1</button><button id"btn2">按钮2</button><button onclick"demo()">按钮3</button><scr…...
记录在ubuntu 18.04系统上安装虚拟机的过程
- 下载ubuntu镜像 ubuntu镜像下载地址 我下载的是desktop桌面版,比较好操作。 - 烧录 我用的Mac,使用的是balenaEtcher软件进行磁盘烧录。 balenaEtcher下载地址 如果出现磁盘损坏或者无法再次使用,参考这里解决:进入 - 安…...

C/C++ 个人笔记
仅供个人复习, C语言IO占位符表 %d十进制整数(int)%ldlong%lldlong long%uunsigned int%o八进制整型%x十六进制整数/字符串地址%c单个字符%s字符串%ffloat,默认保留6位%lfdouble%e科学计数法%g根据大小自动选取f或e格式,去掉无效0 转义符表…...

Stm32的时钟系统以及使用SysTick滴答定时器实现延时
前言 STM32的时钟系统由多个时钟源和时钟树组成时钟源包括主时钟源(HSE)、内部高速时钟源(HSI)、内部低速时钟源(LSI)和外部低速时钟源(LSE)。时钟树由多个时钟分频器和时钟门控器组…...

重生c++系列之类与对象(中篇)
好的继上期,我们今天带来c类与对象系列的继续学习。 类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员 函数。 …...
Java中synchronized基本介绍和细节讨论。使用Synchronized来解决售票超卖问题
基本介绍 线程同步机制:在多线程编程下,一些敏感数据不允许被多个现在在同一时刻访问,此时就使用同步访问机制,保证数据在任何同一时刻最多只有一个进程访问,以保证数据的完整性。(即:当有一个线程在对内存…...

java内存分区
按照垃圾收集,将 Java 堆划分为**新生代 (Young Generation)和老年代(Old Generation)**两个区域, 新生代存放存活时间短的对象,而每次回收后存活的少量对象,将会逐步晋升到老年代中…...
【JavaScript】V8 引擎解析 JavaScript 的过程
V8 是由 Google 开发的 JavaScript 引擎,用于执行 JavaScript 代码。它被广泛应用于 Chrome 浏览器和 Node.js 等环境。V8 的解析和执行过程是一个复杂的流程,以下是其大致步骤: 词法分析(Lexical Analysis)࿱…...

wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...

均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...