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

【Docker】Docker学习⑧ - Docker仓库之分布式Harbor

【Docker】Docker学习⑧ - Docker仓库之分布式Harbor

  • 一、Docker简介
  • 二、Docker安装及基础命令介绍
  • 三、Docker镜像管理
  • 四、Docker镜像与制作
  • 五、Docker数据管理
  • 六、网络部分
  • 七、Docker仓库之单机Dokcer Registry
  • 八、 Docker仓库之分布式Harbor
    • 1 Harbor功能官方介绍
    • 2 安装Harbor
    • 3 配置Harbor
      • 3.1 解压并编辑harbor.cfg
      • 3.2 更新harbor配置
      • 3.3 官方方式启动Harbor
    • 4 配置docker使用harbor仓库上传下载镜像
      • 4.1 编辑docker配置文件
      • 4.2 重启docker服务
      • 4.3 验证能否登录harbor
      • 4.4 测试上传和下载镜像
      • 4.5 验证从harbor服务器下载镜像并启动容器
    • 5 实现harbor高可用
    • 6 实现harbor双向同步
    • 7 harbor https配置
  • 九、单机编排之Docker Compose

一、Docker简介

  • 参考:【Docker】Dokcer学习① - 简介

二、Docker安装及基础命令介绍

  • 参考:【Docker】Docker学习② - Docker安装及基础命令介绍

三、Docker镜像管理

  • 参考:【Docker】Docker学习③ - Docker镜像管理

四、Docker镜像与制作

  • 参考:【Docker】Docker学习④ - Docker镜像与制作

五、Docker数据管理

  • 参考:【Docker】Docker学习⑤ - Docker数据管理

六、网络部分

  • 参考:【Docker】Docker学习⑥ - 网络部分

七、Docker仓库之单机Dokcer Registry

  • 参考:【Docker】Docker学习⑦ - Docker仓库之单机Dokcer Registry

八、 Docker仓库之分布式Harbor

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,由vmware开源,其通过添加一些企业必需的功能特性,例如:安全、标识和管理等,扩展了开源Docker Distribution。

  • 作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。

  • Harbor支持安装再多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中,确保数据和知识产权在公司内部网络中管控。

  • 另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

    官网地址: https://vmware.github.io/harbor/cn/
    官方github地址:https://github.com/vmware/harbor/

1 Harbor功能官方介绍

  • 基于角色的访问控制:用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里由不同的权限。
  • 镜像复制:镜像可以在多个Registry实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。
  • 图形化用户界面:用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间。
  • AD/LDAQ支:Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理。
  • 审计管理:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
  • 国际化:已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。
  • RESTful API - RESTful API:提供给管理员对于Harbor更多的操控,使得与其他管理软件集成变得更容易。
  • 部署简单:提供在线和离线两种安装工具,也可以安装到vSphere平台(OVA方式)虚拟设备。

2 安装Harbor

下载地址:https://github.com/vmware/harbor/releases
安装文档:https://github.com/vmware/harbor/blob/master/docs/installation_guide.md

  • 2.1 服务器1安装docker
  • 2.2 服务器2安装docker
  • 2.3 下载Harbor安装包
    推荐离线完整安装包:
	cd /usr/local/src/wget https://github.com/vmware/harbor/releases/download/v1.2.2/harbor-offline-installer-v1.2.2.tgz在线安装包:wget https://github.com/vmware/harbor/releases/download/v1.2.2/harbor-online-installer-v1.2.2.tgz

3 配置Harbor

3.1 解压并编辑harbor.cfg

	tar xvf harbor-offline-installer-v1.2.2.tgzln -sv /usr/local/src/harbor /usr/local/cd /usr/local/harborgrep "^[a-Z]" harbor.cfg

3.2 更新harbor配置

  • 3.2.1 首次部署harbor更新
	cd /usr/local/harbor./prepare  #更新配置执行完后会在当前目录生成一个docker-compose.yml文件,用于配置数据目录等配置信息。
  • 3.2.2 后期修改配置
    如果harbor运行一段时间之后需要更改配置,则步骤如下:
    停止harbor:
	cd /usr/local/harbor docker-compose stopvim harbor.cfg./preparedocker-compose start

3.3 官方方式启动Harbor

  • 3.3.1 官方方式安装并启动harbor
	yum install python-pippip install --upgrade pippip install docker-compose./install.sh #官方构建harbor和启动方式,推荐此方法,会下载官方的docker镜像

4 配置docker使用harbor仓库上传下载镜像

4.1 编辑docker配置文件

如果配置的是https的话,本地docker就不需要有任何操作就可以访问harbor了

	vim /etc/sysconfig/dockerOPTIONS='--selinux-enabled --log-driver=journald --insecure-registry 192.168.56.199'

❗↑可能是版本不对,无效
❗↓可行

	[root@gbase8c_private harbor]# cat /etc/docker/daemon.json{"insecure-registries":["192.168.56.199"],"registry-mirrors":["https://pkjijpqo.mirror.aliyuncs.com"]}#其中192.168.56.199是我们部署harbor的地址,即hostname配置项值,配置完后需要重启docker服务

4.2 重启docker服务

4.3 验证能否登录harbor

docker login 192.168.56.199
日志:

	[root@gbase8c_private harbor]# docker login 192.168.56.199Username: adminPassword: Login Succeeded

4.4 测试上传和下载镜像

  • 4.4.1 导入镜像
	docker load < /opt/nginx-1.10.3_docker.tar.gz
  • 4.4.2 验证镜像导入成功

  • 4.4.3 镜像打tag
    修改images的名称,不修改成指定格式无法将镜像上传到harbor仓库,格式为:harborIP/项目名/image 名字:版本号

	docker tag 192.168.56.199:5000/jack/nginx_1.10.3:v1 192.168.56.199/nginx/nginx_1.10.3:v1docker images

日志:

	[root@gbase8c_private harbor]# docker imagesREPOSITORY                  TAG                 IMAGE ID            CREATED             SIZEnginx                       latest              605c77e624dd        23 months ago       141MB[root@gbase8c_private harbor]# docker tag nginx:latest 192.168.56.199/nginx/nginx:v1[root@gbase8c_private harbor]# docker imagesREPOSITORY                  TAG                 IMAGE ID            CREATED             SIZEnginx                        latest              605c77e624dd        23 months ago       141MB192.168.56.199/nginx/nginx   v1                  605c77e624dd        23 months ago       141MB
  • 4.4.4 在harbor管理界面创建项目

  • 4.4.5 将镜像push到harbor
    格式为:docker push 镜像名:版本

	docker push 192.168.56.199/nginx/nginx_1.10.3:v1

日志:

	[root@gbase8c_private harbor]# docker push 192.168.56.199/nginx/nginx:v1The push refers to repository [192.168.56.199/nginx/nginx]d874fd2bc83b: Pushed 32ce5f6a5106: Pushed f1db227348d0: Pushed b8d6e692a25e: Pushed e379e8aedd4d: Pushed 2edcec3590a4: Pushed v1: digest: sha256:ee89b00528ff4f02f2405e4ee221743ebc3f8e8dd0bfd5c4c20a2fa2aaa7ede3 size: 1570
  • 4.4.6 harbor界面验证镜像上传成功

  • 4.4.7 验证镜像信息

4.5 验证从harbor服务器下载镜像并启动容器

  • 4.5.1 更改docker配置文件
    目前凡是需要从harbor镜像服务器下载image的docker服务都需要更改,不更改的话无法下载
	vim /etc/sysconfig/docker4 OPTIONS='--selinux-enabled --log-driver=journald --insecure-registry 192.168.56.199'
  • 4.5.2 重启docker服务
  • 4.5.3 验证从harbor下载镜像
  • 4.5.3.1 查看下载命令
    harbor上的每个镜像里面自带pull 命令
  • 4.5.3.2 执行下载
	docker pull

日志:

	[root@gbase8c_1 ~]# docker pull 192.168.56.199/nginx/nginx:v1v1: Pulling from nginx/nginxa2abf6c4d29d: Pull complete a9edb18cadd1: Pull complete 589b7251471a: Pull complete 186b1aaa4aa6: Pull complete b4df32aa5a72: Pull complete a0bcbecc962e: Pull complete Digest: sha256:ee89b00528ff4f02f2405e4ee221743ebc3f8e8dd0bfd5c4c20a2fa2aaa7ede3Status: Downloaded newer image for 192.168.56.199/nginx/nginx:v1192.168.56.199/nginx/nginx:v1[root@gbase8c_1 ~]# docker imagesREPOSITORY                   TAG       IMAGE ID       CREATED         SIZE192.168.56.199/nginx/nginx   v1        605c77e624dd   23 months ago   141MB
  • 4.5.3.3 验证镜像下载完成
  • 4.5.3.4 启动容器
	docker run -d -p 80:80 -p 443:443 
  • 4.5.3.5 验证端口
	[root@gbase8c_1 ~]# docker run -d -p 80:80 -p 443:443 192.168.56.199/nginx/nginx:v1fd35d375abede25eb4ce538b353218ea5b3041ad2c046ce8f75ddef05d182ae5[root@gbase8c_1 ~]# ss -tnlState      Recv-Q Send-Q  Local Address:Port Peer Address:Port              LISTEN     0      128              [::]:443          [::]:*                  LISTEN     0      128              [::]:80           [::]:*  

5 实现harbor高可用

Harbor支持基于策略的Docker镜像复制功能,这类似于MySQL的主从同步,其可以实现不同的数据中心、不同的运行环境之间同步镜像,并提供友好的管理界面,大大简化了实际运维中的镜像管理工作。
已经有很多互联网公司使用harbor搭建内网docker仓库的案例,并且还有实现了双向复制的案例,本文将实现单项复制的部署。

  • 5.1 新部署一台harbor服务器
  • 5.2 验证登录
  • 5.3 创建一个nginx项目
    与主harbor项目名称保持一致
  • 5.4 在主harbor服务器配置同步测试
  • 5.5 点击复制规则
  • 5.6 主harbor查看镜像同步状态
  • 5.6 从harbor查看镜像
  • 5.7 测试从harbor镜像下载和容器启动

6 实现harbor双向同步

在从harbor也配置同步规则

7 harbor https配置

	openssl genrsa -out /usr/local/src/harbor/certs/harbor-ca.key 2048openssl req -x509 -new -nodes -key /usr/local/src/harbor/certs/harbor-ca.key -subj "/CN=harbor.magedu.net" -days 7120 -out /usr/local/src/harbor/certs/harbor-ca.crt

日志:

	[root@gbase8c_1 harbor]# openssl genrsa -out /usr/local/src/harbor/certs/harbor-ca.key 2048Generating RSA private key, 2048 bit long modulus...................................................+++.................................................+++e is 65537 (0x10001)[root@gbase8c_1 certs]# openssl req -x509 -new -nodes -key /usr/local/src/harbor/certs/harbor-ca.key -subj "/CN=harbor.magedu.net" -days 7120 -out /usr/local/src/harbor/certs/harbor-ca.crt

九、单机编排之Docker Compose

  • 参考:【Docker】Docker学习⑨ - 单机编排之Docker Compose

相关文章:

【Docker】Docker学习⑧ - Docker仓库之分布式Harbor

【Docker】Docker学习⑧ - Docker仓库之分布式Harbor 一、Docker简介二、Docker安装及基础命令介绍三、Docker镜像管理四、Docker镜像与制作五、Docker数据管理六、网络部分七、Docker仓库之单机Dokcer Registry八、 Docker仓库之分布式Harbor1 Harbor功能官方介绍2 安装Harbor…...

一行命令在 wsl-ubuntu 中使用 Docker 启动 Windows

在 wsl-ubuntu 中使用 Docker 启动 Windows 0. 背景1. 验证我的系统是否支持 KVM&#xff1f;2. 使用 Docker 启动 Windows3. 访问 Docker 启动的 Windows4. Docker Hub 地址5. Github 地址 0. 背景 我们可以在 Windows 系统使用安装 wsl-ubuntu&#xff0c;今天玩玩在 wsl-ub…...

Datawhale 组队学习之大模型理论基础 Task7 分布式训练

第8章 分布式训练 8.1 为什么分布式训练越来越流行 近年来&#xff0c;模型规模越来越大&#xff0c;对硬件&#xff08;算力、内存&#xff09;的发展提出要求。因为内存墙的存在&#xff0c;单一设持续提高芯片的集成越来越困难&#xff0c;难以跟上模型扩大的需求。 为了…...

05-使用结构体构建相关数据

上一篇&#xff1a; 04-了解所有权 结构体&#xff08;struct&#xff09;是一种自定义数据类型&#xff0c;可以将多个相关值打包命名&#xff0c;组成一个有意义的组。如果你熟悉面向对象的语言&#xff0c;那么结构体就像是对象的数据属性。在本章中&#xff0c;我们将对元组…...

【Android】Android中的系统镜像由什么组成?

文章目录 总览Boot Loader 的加锁与解锁Boot 镜像内核RAM diskARM 中的设备树 (Device Tree) /System 和/Data 分区镜像参考 总览 各种Android设备都只能刷专门为相应型号的设备定制的镜像。 厂商会提供一套系统镜像把它作为“出厂默认”的 Android 系统刷在设备上。 一个完…...

仿真机器人-深度学习CV和激光雷达感知(项目2)day7【ROS关键组件】

文章目录 前言Launch 文件了解 XML 文件Launch 文件作用Launch 文件常用标签实例--作业1的 Launch 文件TF Tree介绍发布坐标变换--海龟例程获取坐标变换--海龟自动跟随例程rqt_工作箱前言 💫你好,我是辰chen,本文旨在准备考研复试或就业 💫本文内容是我为复试准备的第二个…...

解锁一些SQL注入的姿势

昨天课堂上布置了要去看一些sql注入的案例&#xff0c;以下是我的心得&#xff1a; ​​​​​​​ ​​​​​​​ ​​​​​​​ 1.新方法 打了sqli的前十关&#xff0c;我发现一般都是联合查询&#xff0c;但是有没有不是联合查询的方法呢&#xf…...

Qt 拖拽事件示例

一、引子 拖拽这个动作,在桌面应用程序中是非常实用和具有很友好的交互体验的。我们常见的譬如有,将文件拖拽到某个窗口打开,或者拖拽文件到指定位置上传;在绘图软件中,选中某个模板、并拖拽到画布上,画布上变回绘制该模板的图像… 诸如此类,数不胜数。 那么,在Qt中我…...

Linux:命名管道及其实现原理

文章目录 命名管道指令级命名管道代码级命名管道 本篇要引入的内容是命名管道 命名管道 前面的总结中已经搞定了匿名管道&#xff0c;但是匿名管道有一个很严重的问题&#xff0c;它只允许具有血缘关系的进程进行通信&#xff0c;那如果是两个不相关的进程进行通信&#xff0…...

实习记录——第五天

今天我的心情不是很美丽&#xff0c;昨天晚上没怎么睡好&#xff0c;因为我一直在想离不离开实验室&#xff1f;该怎么说的事情&#xff1f;但是又觉得这个项目还没有完全结束&#xff0c;冒昧提这个事情是不是不好&#xff1f;最终也没得出一个结论&#xff0c;晚上睡得也不踏…...

Kotlin 教程(环境搭建)

Kotlin IntelliJ IDEA环境搭建 IntelliJ IDEA 免费的社区版下载地址&#xff1a;Download IntelliJ IDEA – The Leading Java and Kotlin IDE 下载安装后&#xff0c;我们就可以使用该工具来创建项目&#xff0c;创建过程需要选择 SDK&#xff0c; Kotlin 与 JDK 1.6 一起使…...

04.领域驱动设计:了解聚合和聚合根,怎样设计聚合-学习总结

目录 1、概述 2、聚合 3、聚合根 4、怎么设计聚合 4.1 聚合的构建过程主要步骤 第 1 步&#xff1a;采用事件风暴。 第 2 步&#xff1a;选出聚合根。 第 3 步&#xff1a;找出与聚合根关联的所有紧密依赖的实体和值对象。 第 4 步&#xff1a;画出对象的引用和依赖模型…...

cmake-find_package链接第三方库

文章目录 基本调用形式和模块模式使用方式 之前我们是使用了绝对路径来链接OpenCV第三方库&#xff0c;但是现在很多库一般会自己写一些cmake文件提供给用户&#xff0c;用户可以直接使用其中的内置变量即可。使用的命令就是find_package。 基本调用形式和模块模式 find_packa…...

obsidian阅读pdf和文献——与zotero连用

参考&#xff1a; 【基于Obsidian的pdf阅读、标注&#xff0c;构建笔记思维导图&#xff0c;实现笔记标签化、碎片化&#xff0c;便于检索和跳转】 工作流&#xff1a;如何在Obsidian中阅读PDF - Eleven的文章 - 知乎 https://zhuanlan.zhihu.com/p/409627700 操作步骤 基于O…...

走方格(动态规划)

解题思路&#xff1a; 找边界&#xff0c;即行为1&#xff0c;列为1。 拆分问题&#xff0c;拆分成一次走一步&#xff0c;只能向右或者向下走。 解题代码&#xff1a; public static void main(String[] args) {int [][]arrnew int[31][31];Scanner scnew Scanner(Sys…...

基于DataKit迁移MySQL到openGauss

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…...

API网关-Apinto压缩包方式自动化安装配置教程

文章目录 前言一、Apinto安装教程1. 复制脚本2. 增加执行权限3. 执行脚本4. Apinto命令4.1 启动Apinto4.2 停止Apinto4.3 重启Apinto4.4 查看Apinto版本信息4.5 加入Apinto集群4.6 离开Apinto集群4.7 查看Apinto节点信息 5. 卸载Apinto 二、Apserver(Apinto Dashboard V3)安装教…...

内网穿透natapp使用教程(Linux)

我的使用场景&#xff1a;在家访问学校服务器&#xff0c;由于不在一个局域网&#xff0c;所以需要使用内网穿透&#xff0c;我使用的是natapp。需要在有局域网的时候做好以下步骤。 &#xff08;natapp官网&#xff1a;https://natapp.cn/&#xff09; 1. 下载客户端 &#x…...

php函数 二

一 字符串包含 1.1 str_starts_with(string $haystack, string $needle) php8版本中新函数。 检查字符串是否以指定子串开头&#xff0c;区分大小写。返回布尔值。 $haystack待判断的字符串&#xff0c;$needle需要查询的内容。 function test1() {$str "Qwe asd zx…...

IDC机房交换机核心技术与应用指南

IDC机房交换机核心技术与应用指南 ​ 在这个快速发展的数字时代&#xff0c;数据中心作为信息技术的心脏&#xff0c;不仅承载着海量数据的处理、存储和传输&#xff0c;更是支撑着全球企业运营和互联网服务的关键基础设施。在众多构成数据中心的组件中&#xff0c;IDC机房交换…...

Compose | UI组件(五) | Button 按钮组件

文章目录 前言Button 是什么&#xff1f;Button的创建Button显示水平方向的UI IconButton是什么&#xff1f;IconButton是创建 FloatingActionButton是什么&#xff1f;FloatingActionButton创建 ExtendedFloatingActionButton是什么&#xff1f; 总结 前言 随着移动端的技术不…...

【leetcode刷刷】235. 二叉搜索树的最近公共祖先 、701.二叉搜索树中的插入操作 、450.删除二叉搜索树中的节点

235. 二叉搜索树的最近公共祖先 class Solution:def lowestCommonAncestor(self, root: TreeNode, p: TreeNode, q: TreeNode) -> TreeNode:# 递归if not root: return if root.val p.val: return pif root.val q.val: return qleft Noneright Noneif root.val > p.…...

YoloV8改进策略:BackBone改进|DCNv4最新实践|高效涨点|多种改进教程|完整论文翻译

摘要 涨点效果:在我自己的数据集上,mAP50 由0.986涨到了0.993,mAP50-95由0.737涨到0.77,涨点明显! DCNv4是可变形卷积的第四版,速度和v3相比有了大幅度的提升,但是环境搭建有一定的难度,对新手不太友好。如果在使用过程遇到编译的问题,请严格按照我写的环境配置。 …...

高中数学常识

一、大小关系 |x| > |sinx| 理由&#xff1a; 很明显&#xff0c;在圆内&#xff0c;弧长x>垂线sinx 3x、2x 、 1 2 \frac{1}{2} 21​x 理由&#xff1a; log 1 2 _\frac{1}{2} 21​​x、log 2 _2 2​x、 log 3 _3 3​x 二、(xy)? 的求法 利用二项式定理 三、平…...

docker之部署青龙面板

青龙面板是一个用于管理和监控 Linux 服务器的工具&#xff0c;具有定时运行脚本任务的功能。在实际情况下也可以用于一些定期自动签到等任务脚本的运行。 本次记录下简单的安装与使用&#xff0c;请提前安装好docker&#xff0c;参考之前的文章。 一、安装部署 1、拉取镜像 # …...

Type-C平板接口协议芯片介绍,实现单C口充放电功能

在现代平板电脑中&#xff0c;Type-C接口已经成为了一个非常常见的接口类型。相比于传统的USB接口&#xff0c;Type-C接口具有更小的体积、更快的传输速度和更方便的插拔体验。但是&#xff0c;在使用Type-C接口的平板电脑上&#xff0c;如何实现单C口充电、放电和USB2.0数据传…...

系统架构演变

1.1系统架构的演变 2008年以后&#xff0c;国内互联网行业飞速发展&#xff0c;我们对软件系统的需求已经不再是过去”能用就行”这种很low的档次了&#xff0c;像抢红包、双十一这样的活动不断逼迫我们去突破软件系统的性能上限&#xff0c;传统的IT企业”能用就行”的开发思…...

Oracle PL/SQL Programming 第2章:Creating and Running PL/SQL Code 读书笔记

总的目录和进度&#xff0c;请参见开始读 Oracle PL/SQL Programming 第6版 暂不考虑系统设计或单元测试之类的任务&#xff0c;所有 PL/SQL 程序员必须熟悉的基本操作任务包括&#xff1a; 浏览数据库创建和编辑 PL/SQL 源代码编译 PL/SQL 源代码&#xff0c;并更正编译器注…...

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Swiper容器组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之Swiper容器组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Swiper容器组件 滑块视图容器&#xff0c;提供子组件滑动轮播显示的能力。…...

『建议收藏』OpenAI官方出的Prompt提示词教程中文版来了!

一些结论 六大策略: 写清晰的指令 提供参考文本 将复杂任务分解为更简单的子任务 给模型时间“思考” 使用外部工具 系统性测试变化 提高结果质量的六大策略 写清晰的指令 这些模型无法读懂你的想法。如果输出过长&#xff0c;要求简短回复&#xff1b;如果输出过于简单…...