0
点赞
收藏
分享

微信扫一扫

基于 MyBatis Plus 分页封装分页方法

JakietYu 2024-11-01 阅读 21

目录

一、Docker原生私有仓库  Registry

1、搭建本地私有仓库

1.1、下载 Registry 镜像

1.2、添加本地私有仓库配置

1.3、运行 Registry 容器

1.4、上传镜像到本地私有仓库

二、Harbor 概述

1、Harbor 概念

2、Harbor 的特性

3、Harbor 的构成

4、Harbor 私有仓库工作过程

三、部署 docker-harbor 私有仓库

1、环境部署

2、安装 Docker-Compose 服务

3、部署 Harbor 服务

3.1、下载或上传 Harbor 安装程序

3.2、修改 harbor 安装的配置文件

4、启动 Harbor

5、查看 Harbor 启动镜像

6、创建一个新项目

7、在其他客户端上传镜像

四、维护管理 Harbor 

1、通过 Harbor Web 创建项目

2、创建 Harbor 用户

2.1、创建用户并分配权限

2.2、添加项目成员

2.3、在客户端上使用普通账户操作镜像

3、日志查看

4、修改 Harbor.cfg 配置文件

5、移除 Harbor 服务容器同时保留镜像数据/数据库,并进行迁移

5.1、移除 harbor 服务容器

5.2、把项目中的镜像数据进行打包

 6、如需重新部署,需要移除 Harbor 服务容器全部数据


一、Docker原生私有仓库  Registry

1、搭建本地私有仓库

1.1、下载 Registry 镜像

#首先下载 registry 镜像
docker pull registry
 
#查看当前所有镜像
docker images

1.2、添加本地私有仓库配置

前提:获取镜像加速器

浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 获取镜像加速器配置

#在 daemon.json 文件中添加私有镜像仓库地址
vim /etc/docker/daemon.json
{
    "insecure-registries": ["172.16.88.66:5000"], 
    "registry-mirrors": [ "https://0a40cefd360026b40f39c00627fa6f20.mirror.swr.myhuaweicloud.com" ]
}

 
systemctl restart docker.service  #重启docker服务,使修改的配置生效

1.3、运行 Registry 容器

#运行 registry 容器
docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
 
#-itd:在容器中打开一个伪终端进行交互操作,并在后台运行
#-v:把宿主机的/data/registry目录绑定到容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;
#-p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了
#--restart=always:这是重启的策略,在容器退出时总是重启容器
#--name registry:创建容器命名为registry
#registry:latest:这个是刚才pull下来的镜像
 
docker ps    #查看当前正在运行的容器

1.4、上传镜像到本地私有仓库

(1)拉取nginx镜像并为该镜像打新标签

#下载nginx镜像
docker pull nginx
 
#为该镜像添加新的标签
docker tag nginx:latest 172.16.88.66:5000/nginx:v1
# 172.16.88.66:5000/centos:v1: 这是新的标签,它包含了两部分信息。172.16.88.66:5000 是 Registry 的地址,表示你要将这个镜像推送到指定的 Registry。nginx:v1 则是新的标签,表示将原本的 nginx:latest 镜像打上一个新的标签为 nginx:v1。
 
#查看所有的镜像
docker images

(2)上传至私有仓库

#将本地的镜像 172.16.88.66:5000/nginx:v1 推送(上传)到 Registry 地址 172.16.88.66:5000 中
docker push 172.16.88.66:5000/nginx:v1

(3)列出私有仓库的所有镜像

# v2/_catalog API 端点是 Docker Registry 提供的一个用于获取仓库列表的接口,帮助用户更好地管理和组织他们的容器镜像
curl http://172.16.88.66:5000/v2/_catalog

(4)列出私有仓库的 nginx 镜像的所有 tag

#获取指定镜像 nginx 在 Registry 中的所有标签(tags)列表
curl http://172.16.88.66:5000/v2/nginx/tags/list

(5)验证私有仓库功能

先删除原有的 nginx:v1 的镜像,再测试从私有仓库下载

#删除原有的 nginx:v1 的镜像
docker rmi 172.16.88.66:5000/nginx:v1 
#查看当前所有镜像,即查看nginx:v1镜像是否存在
docker images
 
#从私有仓库下载 nginx:v1 镜像
docker pull 172.16.88.66:5000/nginx:v1
#查看当前所有镜像,即查看nginx:v1镜像是否存在
docker images

二、Harbor 概述

1、Harbor 概念

  • Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务
  • Harbor 以 Docker 公司开源的 Registry 为基础,提供了图形管理 UI 、基于角色的访问控制(Role Based AccessControl) 、AD/LDAP 集成、以及审计日志(Auditlogging) 等企业用户需求的功能,同时还原生支持中文
  • Harbor 的每个组件都是以 Docker 容器的形式构建的,使用 docker-compose 来对它进行部署。用于部署 Harbor 的 docker-compose 模板位于 harbor/docker-compose.yml。

2、Harbor 的特性

  • 基于角色控制:用户和仓库都是基于项目进行组织的,而用户在项目中可以拥有不同的权限
  • 基于镜像的复制策略:镜像可以在多个Harbor实例之间进行复制(同步)
  • 支持 LDAP/AD:Harbor 可以集成企业内部已有的 AD/LDAP(类似数据库的一张表),用于对已经存在的用户认证和管理
  • 镜像删除和垃圾回收:镜像可以被删除,也可以回收镜像占用的空间
  • 图形化用户界面:用户可以通过浏览器来浏览,搜索镜像仓库以及对项目进行管理
  • 审计管理:所有针对镜 像仓库的操作都可以被记录追溯,用于审计管理
  • 支持 RESTful API:RESTful API 提供给管理员对于 Harbor 更多的操控, 使得与其它管理软件集成变得更容易
  • Harbor 和 docker registry 的关系:Harbor实质上是对 docker registry 做了封装,扩展了自己的业务模板

3、Harbor 的构成

Harbor 在架构上主要有 Proxy、Registry、Core services、Database(Harbor-db)、Log collector(Harbor-log)、Job services 六个组件

① Proxy

反向代理,通过一个前置的发现代理统一接收浏览器、docker 客户端的请求转发给后端的不同的服务

② Registry

负责存储 docker 镜像,处理 docker pull/push 命令来做上传/下载

③ Core services

Harbor 的核心功能,包括:

ui:提供图像界面

webhook:网站一些服务功能(通知机制)

token:令牌,提供身份验证服务

④ Log collector(Harbor-log)

负责日志(其他的组件日志,上传下载、用户访问等)收集以供后期进行分析和健康检查等

⑤ Database(Harbor-db)

为核心组件提供数据库服务,主要记录数据库镜像的元信息,以及用户的身份信息

⑥ Job services

主要用于镜像复制,本地镜像可以被同步到远程 Harbor 实例上

⑦ adminserver

管理员用于管理用户操作以及身份认证等

认证方式:

  • 扩展认证:通常指的是使用外部身份验证系统(比如 LDAP、AD 等)来进行用户身份验证
  • 令牌认证:是一种基于令牌(Token)的身份验证方式
  • 用户密码认证:用户需要提供其用户名和密码来验证身份
  • SSL认证: SSL 认证通过在客户端和服务器之间建立安全的加密连接来验证身份

4、Harbor 私有仓库工作过程

  • 所有的请求或认为的操作都会首先交给proxy(反向代理)
  • proxy会先将请求转发给后端Core services,Core services 中包含 UI、token(身份验证服务)、webhook(网站的一些服务功能)
  • 转发给registry(镜像存储),若需要下载镜像等权限操作,需要通过Core services中的token令牌的身份验证服务才行
  • 每一次下载和上传都产生操作记录,生成日志,保存至database中
  • database记录保存镜像的元信息及用户与组的身份信息,通过验证授权才能允许相关操作

三、部署 docker-harbor 私有仓库

1、环境部署

节点IP安装服务Docker 版本
Harbor 服务器172.16.88.66docker-ce、docker-compose、harbor-offline-v1.2.220.10.17
client 服务器172.16.88.55docker-ce26.1.0

Docker-CE:Docker CE 是 Docker 公司推出的免费版本的 Docker 引擎

Docker-Compose:是 Docker 官方提供的一个工具,用于定义和运行多个容器化应用程序的工具。通过一个单独的 docker-compose.yml 配置文件,可以定义应用程序的服务、网络、卷等信息,然后使用 docker-compose 命令进行统一的管理和操作

Harbor Offline Installer v1.2.2:Harbor 是一个企业级的 Docker 镜像仓库管理系统,提供了图形管理界面、安全访问控制、LDAP/AD 集成等功能,用于存储、管理和分发 Docker 镜像

(1)关闭所有设备的防火墙和核心防护

systemctl disable --now  firewalld
setenforce 0

(2)修改两台设备的主机名,方便区分

[root@localhost ~]#hostnamectl set-hostname harbor
[root@localhost ~]#bash      #修改harbor服务器主机名
 
[root@localhost ~]#hostnamectl set-hostname client
[root@localhost ~]#bash      #修改client服务器主机名

2、安装 Docker-Compose 服务

#下载 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
 
# `uname -s`-`uname -m`也可以写成$(uname -s) 和 $(uname -m):分别会自动替换为你的系统类型(如:Linux)和机器架构(如:x86_64),确保你下载的是适合你系统的版本。
# curl -L:这部分表示使用curl命令进行下载,并且使用-L参数来跟随重定向
# -o /usr/local/bin/docker-compose: 表示将下载的文件保存为/usr/local/bin目录下的docker-compose文件

cd /usr/local/bin
chmod +x /usr/local/bin/docker-compose   #添加执行权限
docker-compose --version     #查看docker-compose版本

3、部署 Harbor 服务

3.1、下载或上传 Harbor 安装程序

#下载或上传 Harbor 安装程序
wget http://harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz
#解压
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/

3.2、修改 harbor 安装的配置文件

vim /usr/local/harbor/harbor.cfg
hostname = 172.16.88.66       
#第5行,设置为Harbor服务器的IP地址或者域名
harbor_admin_password = Harbor12345 
#第59行,指定管理员的初始密码,默认的用户名/密码是admin/Harbor12345

4、启动 Harbor

在配置好了 harbor.cfg 之后,首先运行./prepare脚本来准备安装环境,然后再运行./install.sh脚本来执行实际的安装过程。这样可以确保安装环境的准备工作完成,并且顺利执行安装过程

#切换到harbor目录,查看其相关文件
cd /usr/local/harbor/
ls


Docker Harbor目录下,以下是对这些文件和目录的简要解释:
①common/目录:包含了一些通用的脚本和配置文件,用于支持Docker Harbor的安装和运行
②docker-compose.notary.yml:Docker Harbor的Docker Compose配置文件之一,用于定义与Notary相关的服务组件和配置信息
③harbor_1_1_0_template:可能是一个模板文件或者配置文件,具体内容取决于其用途,可能与Docker Harbor的特定版本或配置相关
④LICENSE:包含了Docker Harbor的许可证信息,规定了软件的使用和分发条件
⑤prepare:准备安装的脚本文件,用于执行安装前的准备工作
⑥docker-compose.clair.yml:Docker Harbor的Docker Compose配置文件之一,用于定义与Clair相关的服务组件和配置信息
⑦docker-compose.yml:Docker Harbor的主要Docker Compose配置文件,定义了Docker Harbor服务的组件和配置信息
⑧harbor.cfg:Docker Harbor的配置文件,包含了安装和配置Docker Harbor时的各种参数和选项设置
⑨install.sh:安装脚本文件,用于执行Docker Harbor的安装过程
⑩NOTICE:可能包含了关于Docker Harbor软件的一些通知或重要信息
⑪upgrade:可能是用于升级Docker Harbor的相关脚本或文件,用于执行升级操作

#./prepare脚本通常用于执行一些准备工作,例如设置环境变量、检查系统配置要求、准备相关依赖项等这个脚本的作用是为安装过程做一些准备工作,确保安装环境符合要求,并且准备好安装所需的条件
./prepare
#./install.sh脚本是用于执行Docker Harbor的安装过程的脚本文件。通过运行./install.sh脚本,会触发Docker Harbor的安装流程,包括创建必要的配置文件、启动相关服务、配置数据库连接等步骤。这个脚本会根据预先设置的参数和配置选项来安装和配置Docker Harbor服务
./install.sh

 

5、查看 Harbor 启动镜像

cd /usr/local/harbor
docker-compose ps   #必须在docker-compose.yml所在目录执行此命令
#用于显示当前Docker Compose项目中正在运行的服务的状态

6、创建一个新项目

(1)浏览器访问:http://172.16.88.66 登录 Harbor WEB UI 界面,默认的管理员用户名和密码是 admin/Harbor12345

(2)输入用户名和密码登录界面后可以创建一个新项目。点击“+项目”按钮

(3)设置项目名称为“lucky”(必须)和访问级别(非必须),点击“确定”按钮,创建新项目

(4)此时可使用 Docker 命令在本地通过 127.0.0.1 来登录和推送镜像。默认情况下,Registry 服务器在端口 80 上侦听

① 登录 Harbor

docker login -u admin -p Harbor12345 http://127.0.0.1

② 下载镜像进行测试

docker pull nginx

③ 将镜像打标签

格式:docker tag 镜像:标签  仓库IP/项目名称/镜像名:标签

 ④ 上传镜像到 Harbor

docker push 127.0.0.1/dh-lucky/nginx:v1

(5)在 Harbor 界面 dh-lucky 目录下可看见此镜像及相关信息

7、在其他客户端上传镜像

以上操作都是在 Harbor 服务器本地操作。如果其他客户端登录到 Harbor,就会报如下错误。出现这问题的原因为Docker Registry 交互默认使用的是 HTTPS,但是搭建私有镜像默认使用的是 HTTP 服务,所以与私有镜像交互时出现以下错误

docker login -u admin -p Harbor12345 http://172.16.88.66  #登录到 harbor 服务器

(1)在 Docker 客户端配置操作

① 解决方法

解决办法一:在 Docker server 启动的时候,增加启动参数,默认使用 HTTP 访问

vim /usr/lib/systemd/system/docker.service
 
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 172.16.88.66 --containerd=/run/contain    erd/containerd.sock
#指定了启动一个Docker守护进程,让它监听文件描述符,允许访问一个不安全的镜像仓库,并指定了containerd的Unix域套接字文件路径
或者
ExecStart=/usr/bin/dockerd --insecure-registry 172.16.88.66 

解决办法二:修改 daemon.json 配置

vim /etc/docker/daemon.json
 
{
  "insecure-registries": ["172.16.88.66:5000"],  # 不要重复办法一,否则会冲突
  "registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"]
}

② 重启 Docker

systemctl daemon-reload 
systemctl restart docker

 

③ 再次登录 Harbor

#再次登录harbor
docker login -u admin -p Harbor12345 http://172.16.12.15  
 
#查看 Docker 客户端的配置文件
cat /root/.docker/config.json
#用于存储 Docker 客户端的配置信息,比如认证信息、镜像源等
#这个文件通常包含用户的凭据信息,比如用户名、密码等,用于访问 Docker 仓库或者其他需要认证的服务
#在这个文件中,敏感信息是加密存储的,以确保安全性。用户可以编辑这个文件来配置他们的 Docker 客户端

④ 下载镜像进行测试

docker images   #先查看本地是否有nginx:v1镜像
docker pull 172.16.88.66/lucky/nginx:v1   #从harbor下载nginx:v1镜像
docker images   #查看nginx:v1镜像是否下载到本地

⑤ 上传镜像进行测试

docker pull cirros   #下载cirros镜像
docker tag cirros:latest 172.16.88.66/dh-lucky/cirros:v1   #为该镜像打上新标签
docker images   #查看当前所有的镜像
docker push 172.16.88.66/dh-lucky/cirros:v1   #上传至harbor

刷新 Harbor 的 Web 管理界面进行查看,会发现 dh-lucky 项目里面有从客户端上传上来的cirros:v1镜像

四、维护管理 Harbor 

1、通过 Harbor Web 创建项目

在 Harbor 仓库中,任何镜像在被 push 到 regsitry 之前都必须有一个自己所属的项目。
单击“+项目”,填写项目名称,项目级别若设置为"私有",则不勾选

如果设置为公共仓库,则所有人对此项目下的镜像拥有读权限,命令行中不需要执行"Docker login"即可下载镜像,镜像操作与 Docker Hub 一致 

2、创建 Harbor 用户

2.1、创建用户并分配权限

2.2、添加项目成员

2.3、在客户端上使用普通账户操作镜像

(1)在客户端上使用普通账户下载镜像

① 先删除客户端本地的 cirros:v1 镜像

docker rmi 172.16.88.66/lucky/cirros:v1

② 先退出当前管理员用户,再使用上述创建的账户 dh 登录

docker logout 172.16.88.66    #先退出当前管理员用户
docker login -u dh -p Abc123456 http://172.16.88.66  #使用上述创建的账户 dh 登录

③ 从 harbor 下载 cirros:v1 镜像

docker images   #先查看本地是否有cirros:v1镜像
docker pull 172.16.88.66/dh-lucky/cirros:v1   #从harbor下载cirros:v1镜像
docker images   #查看cirros:v1镜像是否下载到本地

(2)在客户端上使用普通账户上传镜像

 ① 将镜像打新标签

docker tag cirros:latest 172.16.88.66/lucky/cirros:v2
docker images

docker tag cirros:latest 172.16.88.66/dh-lucky/cirros:v3
docker images

 ② 上传镜像到 Harbor

docker push 172.16.88.66/lucky/cirros:v2
docker push 172.16.88.66/lucky/cirros:v3

在 Harbor 界面 dh-lucky 目录下可看见上传的镜像及相关信息!

3、日志查看

Web 界面日志,操作日志按时间顺序记录用户相关操作

4、修改 Harbor.cfg 配置文件

在 Harbor 服务器上操作:

要更改 Harbor的配置文件中的可选参数时,请先停止现有的 Harbor实例并更新 Harbor.cfg;然后运行 prepare 脚本来填充配置; 最后重新创建并启动 Harbor 的实例

使用 docker-compose 管理 Harbor 时,必须在与 docker-compose.yml 相同的目录中运行

cd /usr/local/harbor  #必须在docker-compose.yml所在目录执行此命令
#用于停止并移除 Docker Compose 中定义的服务,并且会移除与这些服务关联的所有 Docker 容器、网络、和数据卷
docker-compose down -v
#-v 选项表示同时移除关联的数据卷(volumes),这样可以清除所有相关的持久化数据,包括数据库文件、日志文件等

vim harbor.cfg   #只能修改可选参数,如禁用用户注册功能的参数
self_registration = off
#禁用时,新用户只能由 Admin 用户创建,只有管理员用户可以在 Harbor 中创建新用户

./prepare
docker-compose up -d  #修改完可选参数,可通过此命令使之生效

测试:其他非管理员的普通用户尝试新建在 Harbor 中创建新用户

(1)管理员用户登录 harbor 并把dh-lucky项目设为公开

(2)切换到非管理员的普通用户

 普通用户只能查看到 harbor 的公开库,私有库只有管理员用户有权限查看

普通用户只有项目和日志查看功能,无系统管理功能,也就无法创建新用户

5、移除 Harbor 服务容器同时保留镜像数据/数据库,并进行迁移

在 Harbor 服务器上操作

5.1、移除 harbor 服务容器

cd /usr/local/harbor  #必须在docker-compose.yml所在目录执行此命令
#用于停止并移除 Docker Compose 中定义的服务,并且会移除与这些服务关联的所有 Docker 容器、网络、和数据卷
docker-compose down -v
#-v 选项表示同时移除关联的数据卷(volumes),这样可以清除所有相关的持久化数据,包括数据库文件、日志文件等

5.2、把项目中的镜像数据进行打包

持久数据,如镜像,数据库等在宿主机的/data/目录下,日志在宿主机的/var/log/Harbor/目录下

#持久数据,如镜像,数据库等在宿主机的/data/目录下
#查看dh-lucky项目下的镜像文件
ls /data/registry/docker/registry/v2/repositories/dh-lucky/
 
#将当前项目目录下的镜像文件都打包
cd /data/registry/docker/registry/v2/repositories/dh-lucky/
tar zcvf registry.tar.gz ./*

 6、如需重新部署,需要移除 Harbor 服务容器全部数据

cd /usr/local/harbor
#用于停止并移除 Docker Compose 中定义的服务,并且会移除与这些服务关联的所有 Docker 容器、网络、和数据卷
docker-compose down -v
 
#删除全部数据文件
rm -r /data/database
rm -r /data/registry

举报

相关推荐

0 条评论