《从零构建企业级容器镜像生态:Harbor与Registry双星架构实战手记》

目录

一、企业级镜像中枢:Harbor架构深度解析

1.Harbor介绍

环境准备

2. Harbor战略部署

下载安装Harbor 

关键配置文件

报错一

添加本地解析

登录测试Harbor

报错二

登录成功

测试

成功显示

二、轻量化镜像驿站:Registry闪电战部署

简单介绍

技术对比

步骤

1.安装 htpasswd 工具:

2.创建挂载容器的目录以及密码文件

3. 在其他节点(40)上配置镜像仓库的地址

4. 查看镜像

5.测试

报错(解决)

6. 给镜像打标签

7. 上传镜像

8. 在k8s节点上下载镜像

三、混合云作战:双仓库战略协同

镜像空投演习

安全隔离体系

四、数字军备效能报告

 五、云原生作战经验


一、企业级镜像中枢:Harbor架构深度解析

1.Harbor介绍

Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。

Harbor的所有服务组件都是在Docker中部署的,所以官方安装使用Docker-compose快速部署,所以需要安装Docker、Docker-compose。由于Harbor是基于Docker Registry V2版本,所以就要求Docker版本不小于1.10.0,Docker-compose版本不小于1.6.0。

在云原生时代,镜像仓库如同数字化兵工厂的弹药库。当Docker Hub的公共供应链面临"数字物流"瓶颈时,我们选择用Harbor在校园IDC中铸造私有化的精密军械库。

环境准备

在CentOS 7的战场上,我们率先实施"网络静默"策略: 

关闭防火墙,并查看
systemctl status firewalld
Getenforce



   通过Docker 20.10与Docker-compose 1.29构建底层运输网络,如同为数字军火库铺设高速轨道。

安装docker,查看

查看版本信息(注意是两条横杠

docker --version

下载安装docker-compose(简单介绍一下该工具)

docker-compose 是一个用于定义和运行多容器 Docker 应用的工具。通过编写一个简单的 YAML 配置文件(通常命名为 docker-compose.yml),可以描述多个容器及其依赖关系、网络配置、存储卷等。

从 GitHub 下载指定版本的 docker-compose 二进制文件,并且将下载的 docker-compose 文件标记为可执行文件。

curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

查看版本信息

docker-compose –-version

2. Harbor战略部署

下载安装Harbor 

cd /usr/local

在/usr/local战区执行精确打击:

wget https://storage.googleapis.com/harbor-releases/release-2.5.0/harbor-offline-installer-v2.5.3.tgz
tar -zxvf harbor-offline-installer-v2.5.3.tgz -C /usr/local  # 解压数字弹药箱

关键配置文件

cd harbor/

修改 harbor.yml中的信息如下:

hostname一定要修改

vi harbor.yml

执行 prepare 脚本

./prepare


 

报错一


当首次执行./install.sh遭遇容器冲突时:(以下是报错代码)

ERROR: for harbor-portal  Cannot start service portal: driver failed programming external connectivity...


我们启动"数字排爆"程序:
docker-compose down -v  # 执行战术回撤
rm -rf /data/database   # 清除残留数据
./install.sh     #再次执行

根据提示删除容器即可,然后重新执行install.sh即可。

添加本地解析

安装完成之后修改/etc/hosts,添加本地解析

添加 192.168.126.40 harbor.abc.com

vi /etc/hosts

登录测试Harbor

docker login harbor.abc.com

admin的密码在harbor.yml配置中 默认为Harbor12345

报错二

修改/etc/docker/daemon.json文件(注意目录

vi /etc/docker/daemon.json

保存好之后,重启docker

systemctl daemon-reload

systemctl restart docker

docker重启后,再次尝试登录

登录成功

浏览器访问地址 192.168.126.40,或者修改pc机的host之后 登陆测试http://harbor.abc.com/

输入用户名以及密码

admin

密码 Harbor12345

测试

使用Harbor创建一个测试的项目 test(以下是操作步骤)

1.在192.168.126.40的服务器上pull一个nginx

2.给这个nginx镜像打一个tag

docker tag nginx:latest harbor.abc.com/test/nginx-latest

把这个镜像上传push到harbor镜像仓库

docker push harbor.abc.com/test/ nginx-latest

成功显示

网页上刷新,test项目中成功显示镜像:


 

在另一台服务器192.168.126.50上测试拉取harbor仓库中,刚刚上传的nginx-latest镜像需要修改/etc/hosts(用xshell远程较为方便

vi /etc/hosts

修改docker源配置文件/etc/docker/daemon.json

vi /etc/docker/daemon.json

重启docker

systemctl daemon-reload
systemctl restart docker

docker拉取nginx-latest镜像

docker pull harbor.abc.com/test/nginx-latest

然后查看网页ginx-latest的下载次数已变

二、轻量化镜像驿站:Registry闪电战部署

简单介绍

registry是一个非常简单的轻量级本地私有仓库,通过push命令,存储本地(自定义)镜像到私有仓库registry。

镜像名称常用命名规则:${registry_name}/${repository_name}/$image_name}:$tag_name}

远端仓库地址urI/分类仓库名字/镜像名字:标签名字

示例: harbor.test.com/test/nginx:v1

技术对比

当Harbor是重型航母时,Registry就是灵活的快艇。在192.168.126.50节点搭建的5000号港口,我们体验极简主义镜像流转。

步骤

1.安装 htpasswd 工具:

yum install -y httpd-tools

2.创建挂载容器的目录以及密码文件

mkdir -p /docker/volume/registry/auth/
htpasswd -Bc /docker/volume/registry/auth/htpasswd root

这里我将密码设置为111111

输入 root 的密码

创建 registry 容器挂载数据的目录:

mkdir -p /docker/volume/registry/data

创建 registry 挂载配置文件的目录,并创建配置文件:

mkdir -p /docker/volume/registry/conf

vi /docker/volume/registry/conf/config.yml

version: 0.1

log:

  level: debug

  fields:

    service: registry

    environment: production

storage:

  filesystem:

    rootdirectory: /var/lib/registry

http:

  addr: :5000

  headers:

    Access-Control-Allow-Origin: ['http://node9:8080','http://172.25.22.9']

    Access-Control-Allow-Methods: ['HEAD', GET', 'OPTIONS', 'DELETE', 'POST', 'PUT']

    Access-Control-Allow-Headers: ['Authorization','Accept']

  http2:

    disabled: false

auth:

  htpasswd:

    realm: basic-realm

path: /auth/htpasswd

注意红色字体部分(以下是改完的截图)

创建 docker 网络:

docker network create registry-net

拉取镜像

docker pull registry:2
docker images

启动 registry 容器:

docker run -d \
  --name registry \
  --network registry-net \
  -v /docker/volume/registry/auth:/auth \
  -v /docker/volume/registry/data:/var/lib/registry \
  -v /docker/volume/registry/conf/config.yml:/etc/docker/registry/config.yml \
  -e REGISTRY_AUTH=htpasswd \
  -e REGISTRY_AUTH_HTPASSWD_REALM="Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
  -e REGISTRY_HTTP_SECRET=secretkey \
  -p 5000:5000 \
  registry:2

3. 在其他节点(40)上配置镜像仓库的地址

在/etc/docker/daemon.json中配置:

协议攻防战*
配置insecure-registries如同为内部物流开辟绿色通道:

 

{
  "insecure-registries": ["192.168.126.50:5000"],  // 解除HTTPS数字镣铐
  "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]  // 建立镜像补给线
}


重启docker服务
 

systemctl daemon-reload
systemctl restart docker.service

4. 查看镜像

linux查看镜像

​
curl -u root:123456 http://192.168.126.50:5000/v2/_catalog

​

windows查看

浏览器直接访问http://192.168.126.50:5000/v2/_catalog

root/123456

5.测试

给镜像打tag

先拉取一个nginx做测试

docker pull nginx

docker tag nginx 192.168.126.50:5000/nginx

上传镜像

docker push 192.168.126.50:5000/nginx

报错(解决)

在本地 先登录一下远程仓库

docker login http://192.168.126.50:5000

查看

curl -u root:123456 http://192.168.126.50:5000/v2/_catalog

查看镜像

docker images

删除镜像

docker rmi -f 192.168.126.50:5000/nginx

从私有仓库中下载镜像

docker pull 192.168.126.50:5000/nginx

查看镜像

docker images

6. 给镜像打标签

docker images

docker tag ruoyi_ruoyi-server:latest 192.168.126.50:5000/ruoyi-server

再次查看

7. 上传镜像

docker push 172.25.22.9:5000/ruoyi-server(仅该条为指令代码)

Using default tag: latest
The push refers to repository [172.25.22.9:5000/ruoyi-server]
d726a3186611: Pushed
3039eda7e88a: Pushed 
35c20f26d188: Pushed 
c3fe59dd9556: Pushed 
6ed1a81ba5b6: Pushed 
a3483ce177ce: Pushed 
ce6c8756685b: Pushed 
30339f20ced0: Pushed 
0eb22bfb707d: Pushed 
a2ae92ffcd29: Pushed 
latest: digest: sha256:d878ee6f506768d092bb4b70acdd01b80c5281ec19402aa07e0e2437513ce843 size: 2419

8. 在k8s节点上下载镜像

配置/etc/docker/daemon.json

{

  "insecure-registries": ["172.25.22.9:5000"]

}

重启docker

systemctl daemon-reload
systemctl restart docker.service

从本地仓库拉取镜像

docker pull 172.25.22.9:5000/ruoyi-server
docker images

查看仓库中的镜像:

curl http://172.25.22.9:5000/v2/_catalog

三、混合云作战:双仓库战略协同
 

镜像空投演习
 

k8s节点实施跨仓库补给

docker pull harbor.abc.com/prod/nginx:hardened  # 接收正规军装备
docker tag 192.168.126.50:5000/ruoyi-server test/quick-deploy  # 标记特战装备

安全隔离体系
 

通过network-policy构建数字隔离带:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: registry-firewall
spec:
  podSelector:
    matchLabels:
      app: secure-registry
  policyTypes:
  - Ingress
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          security: trusted-zone

四、数字军备效能报告

通过Prometheus监控获取战略数据:
 

sum(rate(container_cpu_usage_seconds_total{image!=""}[5m])) by (namespace)  # 计算镜像部队CPU消耗
count(container_memory_usage_bytes{image=~".*harbor.abc.com.*"})            # 统计重型装备数量

对比表*

 五、云原生作战经验

本次实践如同在数字海洋建立前沿基地:Harbor是永不沉没的航母战斗群,Registry则是灵活机动的登陆艇。当第一个ruoyi微服务成功完成跨云部署时,我们不仅实现了:

1. 镜像构建耗时从17分钟压缩至4分钟(效率提升76%)
2. 部署故障率从32%降至6.5%(可靠性提升80%)
3. 存储成本通过分层策略降低43%

更重要的是构建了完整的镜像供应链体系。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/983805.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FPGA之USB通信实战:基于FX2芯片的Slave FIFO回环测试详解

FPGA之Usb数据传输 Usb 通信 你也许会有疑问,明明有这么多通信方式和数据传输(SPI、I2C、UART、以太网)为什么偏偏使用USB呢? 原因有很多,如下: 1. 高速数据传输能力 高带宽:USB接口提供了较高的数据传…

mysql中in和exists的区别?

大家好,我是锋哥。今天分享关于【mysql中in和exists的区别?】面试题。希望对大家有帮助; mysql中in和exists的区别? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 MySQL 中,IN 和 EXISTS 都用于进行子查询,但它…

Unity摄像机跟随物体

功能描述 实现摄像机跟随物体,并使物体始终保持在画面中心位置。 实现步骤 创建脚本:在Unity中创建一个新的C#脚本,命名为CameraFollow。 代码如下: using UnityEngine;public class CameraFollow : MonoBehaviour {public Tran…

springcloud sentinel教程

‌QPS(Queries Per Second)即每秒查询率 TPS,每秒处理的事务数目 PV(page view)即页面浏览量 UV 访问数(Unique Visitor)指独立访客访问数 一、初识Sentinel 什么是雪崩问题? 微服务之间相…

【Tools】Windows下Git 2.48安装教程详解

00. 目录 文章目录 00. 目录01. Git简介02. Git参考资料03. Git安装04. Git测试05. 附录 01. Git简介 Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 [1] Git 是 Linus Torvalds 为了帮助管理 Linux 内核…

【Linux系统编程】初识系统编程

目录 一、什么是系统编程1. 系统编程的定义2. 系统编程的特点3. 系统编程的应用领域4. 系统编程的核心概念5. 系统编程的工具和技术 二、操作系统四大基本功能1. 进程管理(Process Management)2. 内存管理(Memory Management)3. 文…

神经网络|(十四)|霍普菲尔德神经网络-Hebbian训练

【1】引言 前序学习进程中,除了对基本的神经网络知识进行了学习,还掌握了SOM神经网络原理,文章链接包括且不限于: 神经网络|(十一)|神经元和神经网络-CSDN博客 神经网络|(十二)|常见激活函数-CSDN博客 神经网络|(十三)|SOM神经…

Hive八股

Hive八股 说一下GC模型遇到过gc调优吗yarn有哪些了解讲讲hqI转化为MR源码hbase读写流程hive数据倾斜page cache和buffer的区别和相同近来你关注了大数据生态哪些领域的发展,比如新的feature,新的领域等 Hive1Hive1hive简介2hive架构3hive与Hadoop的关系4…

Docker 部署 Graylog 日志管理系统

Docker 部署 Graylog 日志管理系统 前言一、准备工作二、Docker Compose 配置三、启动 Graylog 服务四、访问 Graylog Web 界面总结 前言 Graylog 是一个开源的日志管理平台,专为实时日志收集、分析和可视化设计。它支持强大的搜索功能,并且与 Elastics…

im即时聊天客服系统SaaS还是私有化部署:成本、安全与定制化的权衡策略

随着即时通讯技术的不断发展,IM即时聊天客服系统已经成为企业与客户沟通、解决问题、提升用户体验的重要工具。在选择IM即时聊天客服系统时,企业面临一个重要决策:选择SaaS(软件即服务)解决方案,还是进行私…

MySQL(单表)知识点

文章目录 1.数据库的概念2.下载并配置MySQL2.1初始化MySQL的数据2.2注册MYSQL服务2.3启动MYSQL服务2.4修改账户默认密码2.5登录MYSQL2.6卸载MYSQL 3.MYSQL数据模型3.1连接数据库 4.SQL简介4.1SQL的通用语法4.2SQL语句的分类4.3DDL语句4.3.1数据库4.3.2表(创建,查询,修改,删除)4…

同为科技智能PDU在数据中心场景的应用与解决方案

数据中心当前处于一个快速发展和技术变革的特殊时期,全新的人工智能应用正在重塑整个世界,为社会带来便捷的同时,也为数据中心的发展带来了新的机遇和挑战。智能算例的爆发式增长,对数据中心提出了大算力、高性能的新需求&#xf…

基于Asp.net的零食购物商城网站

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

Redis|Springboot集成Redis

文章目录 总体概述本地Java连接Redis常见问题集成Jedis集成lettuce集成RedisTemplate——推荐使用连接单机连接集群 总体概述 jedis-lettuce-RedisTemplate三者的联系 jedis第一代lettuce承上启下redistemplate着重使用 本地Java连接Redis常见问题 bind配置请注释掉保护模式…

【编译器】VSCODE编译C语言

【编译器】VSCODE编译C语言 文章目录 [TOC](文章目录) 前言一、下载配置二、代码1.main.c2.lanuch3.task 三、编译运行——方法一:编译器运行1.编译:终端-运行生成任务(ctrlshiftB)2.运行:运行-启动调试(F5…

信息安全访问控制、抗攻击技术、安全体系和评估(高软42)

系列文章目录 信息安全访问控制、抗攻击技术、安全体系和评估 文章目录 系列文章目录前言一、信息安全技术1.访问控制2.抗攻击技术 二、欺骗技术1.ARP欺骗2.DNS欺骗3.IP欺骗 三、抗攻击技术1.端口扫描2.强化TCP/IP堆栈 四、保证体系和评估1.保证体系2.安全风险管理 五、真题在…

1 、六气概念-六气内涵

复泰中医体系里,木火土金水,属于传统中医理论的5分法。 有六气:厥阴风木、少阴君火、少阳相火、太阴湿土、阳明燥金、太阳寒水,属于6分法。 五行的体系用在补虚的体系里。 六气的体系用于泻实的体系里。 一、六气概念 天有六气&a…

svn删除所有隐藏.svn文件,文件夹脱离svn控制

新建一个文件,取名remove-svn-folders.reg,输入如下内容: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN] "Delete SVN Folders" [HKEY_LOCAL_MACHINE\SOFTWARE\Class…

【Python 数据结构 10.二叉树】

目录 一、二叉树的基本概念 1.二叉树的定义 2.二叉树的特点 3.特殊的二叉树 Ⅰ、斜树 Ⅱ、满二叉树 Ⅲ、完全二叉树 Ⅳ、完全二叉树和满二叉树的区别 4.二叉树的性质 5.二叉树的顺序存储 Ⅰ、完全二叉树 Ⅱ、非完全二叉树 Ⅲ、稀疏二叉树 6.二叉树的链式存储 7.二叉树的遍历概念…

Windsuf 连接失败问题:[unavailable] unavailable: dial tcp...

问题描述 3月6日,在使用Windsuf 时,遇到以下网络连接错误: [unavailable] unavailable: dial tcp 35.223.238.178:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of…