【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?2. 使用 Docker 启动 Windows3. 访问 Docker 启动的 Windows4. Docker Hub 地址5. Github 地址 0. 背景 我们可以在 Windows 系统使用安装 wsl-ubuntu,今天玩玩在 wsl-ub…...
Datawhale 组队学习之大模型理论基础 Task7 分布式训练
第8章 分布式训练 8.1 为什么分布式训练越来越流行 近年来,模型规模越来越大,对硬件(算力、内存)的发展提出要求。因为内存墙的存在,单一设持续提高芯片的集成越来越困难,难以跟上模型扩大的需求。 为了…...
05-使用结构体构建相关数据
上一篇: 04-了解所有权 结构体(struct)是一种自定义数据类型,可以将多个相关值打包命名,组成一个有意义的组。如果你熟悉面向对象的语言,那么结构体就像是对象的数据属性。在本章中,我们将对元组…...
【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注入的案例,以下是我的心得: 1.新方法 打了sqli的前十关,我发现一般都是联合查询,但是有没有不是联合查询的方法呢…...
Qt 拖拽事件示例
一、引子 拖拽这个动作,在桌面应用程序中是非常实用和具有很友好的交互体验的。我们常见的譬如有,将文件拖拽到某个窗口打开,或者拖拽文件到指定位置上传;在绘图软件中,选中某个模板、并拖拽到画布上,画布上变回绘制该模板的图像… 诸如此类,数不胜数。 那么,在Qt中我…...
Linux:命名管道及其实现原理
文章目录 命名管道指令级命名管道代码级命名管道 本篇要引入的内容是命名管道 命名管道 前面的总结中已经搞定了匿名管道,但是匿名管道有一个很严重的问题,它只允许具有血缘关系的进程进行通信,那如果是两个不相关的进程进行通信࿰…...
实习记录——第五天
今天我的心情不是很美丽,昨天晚上没怎么睡好,因为我一直在想离不离开实验室?该怎么说的事情?但是又觉得这个项目还没有完全结束,冒昧提这个事情是不是不好?最终也没得出一个结论,晚上睡得也不踏…...
Kotlin 教程(环境搭建)
Kotlin IntelliJ IDEA环境搭建 IntelliJ IDEA 免费的社区版下载地址:Download IntelliJ IDEA – The Leading Java and Kotlin IDE 下载安装后,我们就可以使用该工具来创建项目,创建过程需要选择 SDK, Kotlin 与 JDK 1.6 一起使…...
04.领域驱动设计:了解聚合和聚合根,怎样设计聚合-学习总结
目录 1、概述 2、聚合 3、聚合根 4、怎么设计聚合 4.1 聚合的构建过程主要步骤 第 1 步:采用事件风暴。 第 2 步:选出聚合根。 第 3 步:找出与聚合根关联的所有紧密依赖的实体和值对象。 第 4 步:画出对象的引用和依赖模型…...
cmake-find_package链接第三方库
文章目录 基本调用形式和模块模式使用方式 之前我们是使用了绝对路径来链接OpenCV第三方库,但是现在很多库一般会自己写一些cmake文件提供给用户,用户可以直接使用其中的内置变量即可。使用的命令就是find_package。 基本调用形式和模块模式 find_packa…...
obsidian阅读pdf和文献——与zotero连用
参考: 【基于Obsidian的pdf阅读、标注,构建笔记思维导图,实现笔记标签化、碎片化,便于检索和跳转】 工作流:如何在Obsidian中阅读PDF - Eleven的文章 - 知乎 https://zhuanlan.zhihu.com/p/409627700 操作步骤 基于O…...
走方格(动态规划)
解题思路: 找边界,即行为1,列为1。 拆分问题,拆分成一次走一步,只能向右或者向下走。 解题代码: public static void main(String[] args) {int [][]arrnew int[31][31];Scanner scnew Scanner(Sys…...
基于DataKit迁移MySQL到openGauss
📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&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)
我的使用场景:在家访问学校服务器,由于不在一个局域网,所以需要使用内网穿透,我使用的是natapp。需要在有局域网的时候做好以下步骤。 (natapp官网:https://natapp.cn/) 1. 下载客户端 &#x…...
php函数 二
一 字符串包含 1.1 str_starts_with(string $haystack, string $needle) php8版本中新函数。 检查字符串是否以指定子串开头,区分大小写。返回布尔值。 $haystack待判断的字符串,$needle需要查询的内容。 function test1() {$str "Qwe asd zx…...
IDC机房交换机核心技术与应用指南
IDC机房交换机核心技术与应用指南 在这个快速发展的数字时代,数据中心作为信息技术的心脏,不仅承载着海量数据的处理、存储和传输,更是支撑着全球企业运营和互联网服务的关键基础设施。在众多构成数据中心的组件中,IDC机房交换…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
