从小白到大神之路之学习运维第75天-------Harbor企业镜像仓库部署

news2024/11/29 2:37:03

第四阶段

时  间:2023年8月7日

参加人:全班人员

内  容:

Harbor企业镜像仓库部署

目录

一、案例概述

二、什么是 Harbor 

(一)Harbor 的优势

(二)Harbor 架构构成 

(三)Core services 这是 Harbor 的核心功能,

三、安装部署haabor仓库

(一)部署harbor环境

四、harbor常规操作

(一)创建一个新项目

(二)客户端上传镜像 

(三)Harbor 日常操作管理 

五、Harbor安全设置

(一)为Harbor配置https

拓展:常用的一些设置


一、案例概述

        Docker 官方镜像仓库是用于管理公共镜像的地方,大家可以在上面找到想要的镜像,也可以把自己的镜像推送上去。但是有时候服务器无法访问互联网,或者不希望将自己的镜像放到互联网上,那么就需要用到 Docker Registry 私有仓库,它可以用来存储和管理自己的镜像。最近公司将项目全部打包成镜像有部署私有仓库服务的需求,经过几轮商讨,最终选择 Docker Harbor,Docker Harbor 有可视化的 Web 管理界面可以方便管理Docker 镜像操作也很方便简单,又提供了多个项目的镜像权限管理控制功能等。

二、什么是 Harbor 

        Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 仓库服务。它以Docker公司开源的Registry为基础,提供了管理 UI。

      基于角色的访问控制(Role Based AccessControl)、AD/LDAP集成、以及审计日志 (Auditlogging) 等企业用户需求的功能。通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。

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

(一)Harbor 的优势

基于角色控制:用户和仓库都是基于项目进行组织的,而用户基于项目可以拥有不同的权限。

基于镜像的复制策略: 镜像可以在多个 Harbor 实例之间进行复制(同步)。适用于负载平衡、高可用性、多数据中心、混合和多云场景。

支持 LDAP / AD:Harbor 与现有的企业 LDAP / ADA 集成,用于用户认证和管理。

图像删除和垃圾收集:镜像可以被删除,也可以回收镜像占用的空间。

图形 UI:用户可以轻松浏览、搜索镜像仓库以及对项目进行管理。

审计: 对存储库的所有操作都进行记录。

RESTful API:用于大多数管理操作的 RESTful API,易于与外部系统集成。

(二)Harbor 架构构成 

Proxy:Harbor 的 Registry、UI、token 等服务。通过一个前置的反向代理统一接收浏览器Docker 客户端的请求,并将请求转发给后端不同的服务。

Registry:负责储存Docker镜像,并处理 Docker push/pull 命令。由于要对用户进行访问控制,即不同用户对Docker image有不同的读写权限,Registry会指向一个 token服务,强制用户的每次 Docker pull/push 请求都要携带一个合法的token,Registry会通过公钥对 token 进行解密验证。

(三)Core services 这是 Harbor 的核心功能,

主要提供以下服务:

UI(Harbor-ui):提供图形化界面,帮助用户管理 Registry 上的镜像(image), 并对用户进行授权。

Webhook:为了及时获取 registry 上image状态变化的情况,在Registry上配置webhook,把状态变化传递给UI模块。

Token 服务:负责根据用户权限给每个Docker push/pull命令签发token.Docker客户端向 Regiøstry服务发起的请求,如果不包含token,会被重定向到这里,获得token后再重新向 Registry进行请求。

Database(Harbor-db):为 core services 提供数据库服务,负责储存用户权限、审计日志、Docker image 分组信息等数据。

Log collector(Harbor-log):为了帮助监控 Harbor 运行,负责收集其他组件的log,供日后进行分析。

        Harbor的每个组件都是以Docker容器的形式构建的,因此,使用Docker Compose 来 对它进行部署。在源代码中(https://github.com/vmware/Harbor), 用于部署Harbor的Docker Compose 模板位于 Harbor/make/docker-compose.tpl。

三、安装部署haabor仓库

角色

主机名

IP地址

软件

主库

huyang1

192.168.100.131

docker-ce

docker-compose

Harbor-offline

从库

huyang2

192.168.100.132

docker-ce

docker-compose

Harbor-offline

Docker客户端

huyang3

192.168.100.133

docker-ce

(一)部署harbor环境

1、关闭防火墙

[root@huyang2 ~]# systemctl stop firewalld

[root@huyang2 ~]# iptables -F

[root@huyang2 ~]# setenforce 0

2、安装docker-ce(所有主机)

[root@huyang2 ~]# wget -O

/etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

[root@huyang2 ~]# yum -y install yum-utils

device-mapper-persistent-data lvm2

[root@huyang2 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

[root@huyang2 ~]# ls /etc/yum.repos.d/

backup  Centos-aliyun.repo  CentOS-Media.repo  docker-ce.repo

[root@huyang2 ~]# yum -y install docker-ce

[root@huyang2 ~]# systemctl start docker

[root@huyang2 ~]# systemctl enable docker

3、配置阿里云镜像加速器

阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

[root@huyang2 ~]# cat << END > /etc/docker/daemon.json

{

"registry-mirrors":[ "https://nyakyfun.mirror.aliyuncs.com" ]

}

END

[root@huyang2 ~]# systemctl daemon-reload

[root@huyang2 ~]# systemctl restart docker

[root@huyang2 ~]# docker version

4、部署Docker Compose 服务

下载最新 Docker-Compose(两台harbor主机)

[root@huyang2 ~]# curl -L \

https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

[root@huyang2 ~]# chmod +x   /usr/local/bin/docker-compose

查看 Docker-Compose 版本判断安装是否成功

[root@huyang2 ~]# docker-compose --version

5、部署 Harbor 服务 

Harbor 被部署为多个 Docker 容器,因此可以部署在任何支持 Docker 的 Linux 发行版上。目标主机需要安装 Python、Docker 和 Docker Compose。

6、下载 Harbor 安装程序(两台harbor主机)

[root@huyang1 ~]# wget

http://harbor.orientsoft.cn/harbor-v1.5.0/harbor-offline-installer-v1.6.0.tgz

[root@huyang1 ~]# tar xf

harbor-offline-installer-v1.6.0.tgz

7、配置 Harbor 参数文件

配置参数位于文件/usr/local/harbor/harbor.cfg 中。安装之前需要修改IP地址。

[root@huyang1 ~]# vim /usr/local/harbor/harbor.cfg

备注:在此只需修改hostname为当前主仓库的ip地址就行,其他默认设置!

        关于 Harbor.cfg 配置文件中有两类参数,所需参数和可选参数。

        所需参数:这些参数需要在配置文件 Harbor.cfg 中设置。如果用户更新它们并运行 install.sh 脚本重新安装 Harbor,参数将生效。具体参数如下:

hostname:用于访问用户界面和 register 服务。它应该是目标机器的 IP 地址或完全限定的域名(FQDN),例如 192.168.200.111或 www.crushlinux.com。不要使用 localhost 或 127.0.0.1 为主机名。

ui_url_protocol:(http 或 https,默认为 http)用于访问 UI 和令牌/通知服务的协议。如果公证处于启用状态,则此参数必须为 https。

max_job_workers:镜像复制作业线程。

db_password:用于 db_auth 的 MySQL 数据库 root 用户的密码。

customize_crt:打开或关闭,默认打开。打开此属性时,准备脚本创建私钥和根证书,用于生成/验证注册表令牌。当由外部来源提供密钥和根证书时,将此属性设置为 off。

ssl_cert:SSL 证书的路径,仅当协议设置为 https 时才应用。

ssl_cert_key:SSL 密钥的路径,仅当协议设置为 https 时才应用。

secretkey_path:用于在复制策略中加密或解密远程 register 密码的密钥路径。

        可选参数:这些参数对于更新是可选的,即用户可以将其保留为默认值,并在启动时生效,随后对这些参数的更新,Harbor.cfg 将被忽略。

        注意:如果选择通过 UI 设置这些参数,请确保在启动 Harbour 后立即执行此操作。具体来说,必须在注册或在 Harbor 中创建任何新用户之前设置所需的 auth_mode。当系统中有用户时(除了默认的 admin 用户), auth_mode 不能被修改。具体参数如下:

电子邮件设置:Harbor 需要这些参数才能向用户发送“密码重置”电子邮件,并且只有在需要该功能时才需要。请注意,在默认情况下 SSL 连接时没有启用。如果SMTP 服务器需要 SSL,但不支持 STARTTLS,那么应该通过设置启用 SSL email_ssl = TRUE。

harbor_admin_password:管理员的初始密码,只在 Harbour 第一次启动时生效。之后,此设置将被忽略,并且应在 UI 中设置管理员的密码。请注意,默认的用户名/密码是 admin/Harbor12345。

auth_mode:使用的认证类型,默认情况下,它是 db_auth,即凭据存储在数据库中。对于 LDAP 身份验证,请将其设置为 ldap_auth。

self_registration:( 打开或关闭,默认打开)启用/禁用用户注册功能。禁用时,新用户只能由 Admin 用户创建,只有管理员用户可以在 Harbour 中创建新用户。注意:当 auth_mode 设置为 ldap_auth 时,自注册功能将始终处于禁用状态,并且该标志被忽略。

token_expiration:由令牌服务创建的令牌的到期时间(分钟),默认为 30 分钟。

project_creation_restriction:用于控制哪些用户有权创建项目的标志。默认情况下,每个人都可以创建一个项目。如果将其值设置为“adminonly”,那么只有admin 可以创建项目。

verify_remote_cert:打开或关闭,默认打开。此标志决定了当 Harbour 与远程register 实例通信时是否验证 SSL/TLS 证书。将此属性设置为 off 将绕过 SSL/TLS验证,这在远程实例具有自签名或不可信证书时经常使用。

        另外,默认情况下Harbor 将镜像存储在本地文件系统上。在生产环境中,可以考虑使用其他存储后端而不是本地文件系统,如 S3、Openstack Swif、Ceph 等。需要更新 common/templates/registry/config.yml 文件。

8、启动并安装 Harbor 

配置完成就可以启动 Harbor 了,如下操作:

[root@huyang1 ~]# sh /usr/local/harbor/install.sh

9、查看 Harbor 启动镜像

[root@huyang1 ~]# docker-compose ps

        如果一切都正常,应该可以打开浏览器访问 http://192.168.100.131的管理页面,默认的管理员用户名和密码是 admin/Harbor12345。

至此, Harbor已经搭建完成,具体在WEB UI下面操作也是非常的简单,只有几个选项。

四、harbor常规操作

(一)创建一个新项目

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

2、填写项目名称为“2304”

3、点击“确定”按钮,成功创建

4、可以使用 Docker 命令在Harbor本地通过 127.0.0.1 来登录和推送镜像了。默认情况下, Register 服务器在端口 80 上侦听。

5、登录 Harbor。

[root@hhuyang1 ~]# docker login -u admin -p Harbor12345 http://127.0.0.1

6、下载体积小点的镜像进行测试。

[root@huyang1 ~]# docker pull busybox

7、镜像打 tag

[root@huyang1 ~]# docker tag busybox

127.0.0.1/2304/busybox:test1

8)上传镜像到 Harbor

[root@huyang1 ~]# docker push

127.0.0.1/2304/busybox:test1

9、在 Harbor 界面 2304目录下就可以看见这个镜像,以及这个镜像的一些信息。

(二)客户端上传镜像 

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

[root@huyang2 ~]# docker login -u admin -p Harbor12345 http://192.168.100.131

1、在 Docker 客户端配置操作如下:

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

[root@huyang2 ~]# vim

/usr/lib/systemd/system/docker.service

2、重启 Docker,再次登录

[root@huyang2 ~]# systemctl daemon-reload

[root@huyang2 ~]# systemctl restart docker

3、再次登录 Harbor

[root@huyang2 ~]# docker login -u admin -p Harbor12345 192.168.100.131

4、下载体积小一点的镜像进行测试

[root@huyang2 ~]# docker pull busybox

5、镜像打标签及上传到 myproject-crushlinux 项目里面

[root@huyang2 ~]# docker tag busybox 192.168.100.131/2304/busybox:test2

[root@huyang2 ~]# docker push 192.168.100.131/2304/busybox:test2

6、查看 Harbor 的 web 管理界面,myproject-crushlinux 项目里面有两个镜像。

(三)Harbor 日常操作管理 

1、通过 Harbor Web 创建项目 

        点击“+项目”时按规范填写项目名称。项目级别:私有即不勾选(勾选后会变为"公开")。如果设置为公共仓库,则所有人对此项目下的镜像拥有读权限,命令行中不需要执行"Docker login"即可下载镜像,镜像操作与Docker hub 一致。

2、创建 Harbor 用户 

1)创建用户并分配权限

系统管理->用户管理->创建用户,填写用户名为“OP---Ada”,邮箱为 13363571949@163.com,全名为“Ada”,密码为“Hy584540”,注释为“管理员”。

点击“”确定“按钮后,可将上述创建的用户设置为管理员角色或进行删除操作。

取消管理员:

2)添加项目成员

项目-> 2304->成员->+成员,填写上述创建的用户并分配角色为“项目管理员”。

新建成员:

可对成员角色进行变更或者删除操作。

3)在客户端上用普通账户镜像操作

(1)删除上述打标签的本地镜像.

[root@huyang2 ~]# docker rmi 192.168.100.121/2304/busybox:test2

[root@huyang2 ~]# docker images

备注:Harbor没有发生变化!

(2)首先退出当前用户,然后使用上述创建的账户OP---Ada登录。 

[root@huyang2 ~]# docker logout 192.168.100.131

[root@huyang2 ~]# docker login 192.168.100.131

(3)下载 192.168.100.131/2304/busybox 标签为 test1 的镜像。

[root@huyang2 ~]# docker pull 192.168.100.131/2304/busybox:test1

[root@huyang2 ~]# docker images

(4)查看日志

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

3、管理 Harbor 

可以使用 docker-compose来管理Harbor。一些有用的命令如下所示(必须在与docker-compose.yml 相同的目录中运行)。

1)停止/启动/重启 Harbor

[root@huyang1 ~]# cd /usr/local/harbor/

[root@huyang1 ~]# docker-compose stop | start | restart

2)修改 Harbor.cfg 配置文件

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

[root@harbor harbor]# docker-compose down -v

[root@harbor harbor]# vi harbor.cfg

[root@harbor harbor]# ./prepare

[root@harbor harbor]# docker-compose up -d

3)移除 Harbor 服务容器同时保留镜像数据/数据库

[root@harbor harbor]# docker-compose down -v

4)移除 Harbor 服务容器全部数据(重新部署时采用)

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

[root@huyang1 ~]# rm -r /data/database

[root@huyang1 ~]# rm -r /data/registry

五、Harbor安全设置

(一)为Harbor配置https

1、创建自己的CA证书

[root@huyang1 ~]# yum -y install openssl

[root@huyang1 ~]# mkdir -p /data/ssl

[root@huyang1 ~]# cd /data/ssl/

[root@huyang1 ssl]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt

 配置如下:

2、生成证书签名请求

[root@huyang1 ~]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout www.jx.com.key -out www.jx.com.csr

3、生成注册表主机的证书

[root@huyang1 ssl]# openssl x509 -req -days 365 -in www.jx.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out www.jx.com.crt

4、查看证书情况

[root@huyang1 ssl]# ls -l

5、信任自签发的域名证书

由于CA证书是我们自己签发的,Linux操作系统是不信任的,因此我们需要把证书加入到系统的信任证书里。

1)将自签ca证书添加到系统信任

[root@huyang1 ~]# cp www.jx.com.crt /etc/pki/ca-trust/source/anchors/

2)让系统ca信任设置立刻生效

[root@huyang1 ~]# update-ca-trust extract

[root@huyang1 ~]# update-ca-trust enable

3)创建harbor的证书目录,并复制

[root@huyang1 ~]# mkdir -p /etc/ssl/harbor

[root@huyang1 ~]# cp /data/ssl/www.jx.com.key /etc/ssl/harbor/

[root@huyang1 ~]# cp /data/ssl/www.jx.com.crt /etc/ssl/harbor/

[root@huyang1 ~]# ll /etc/ssl/harbor/

6、关闭现有harbor

[root@huyang1 ~]# cd /usr/local/harbor/

[root@huyang1  harbor]# docker-compose stop

[root@huyang1  harbor]# docker rm -f $(docker ps -aq)

7、修改harbor.cfg配置文件

[root@huyang1 harbor]# vim harbor.cfg

配置如下:

     7 hostname = www.jx.com

    11 ui_url_protocol = https

    23 ssl_cert = /etc/ssl/harbor/www.jx.com.crt

    24 ssl_cert_key = /etc/ssl/harbor/www.jx.com.key

8、重新安装harbor私有镜像仓库

[root@huyang1 harbor]# ./install.sh --with-notary --with-clair  

备注:##--with-notary启用镜像签名;

--with-clair启用漏洞扫描

9、浏览器进行访问测试 https://192.168.100.131

 

拓展:常用的一些设置

1、配置安全模式

 

项目创建:设定为仅管理员(企业中不会让注册用户随便创建),不允许自动创建

2、漏洞扫描

3、设置仓库安全等级

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++动态规划经典试题解析之打家劫舍系列

1.前言 力扣上有几道与打家劫舍相关的题目,算是学习动态规划时常被提及的经典试题,很有代表性,常在因内大大小小的社区内看到众人对此类问题的讨论。 学习最好的方式便是归纳总结、借鉴消化,基于这个目的,本文对此类问题也做了讲解,在一些优秀思想的基础上添加了个人观…

自然语言处理[信息抽取]:MDERank关键词提取方法及其预训练模型----基于嵌入的无监督 KPE 方法 MDERank

NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型压缩算法等 专栏详细介绍:NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型…

一百四十八、Kettle——Linux上安装的kettle8.2连接Hive3.1.2

一、目标 kettle8.2在Linux安装好后&#xff0c;需要与Hive3.1.2数据库建立连接 二、前提 &#xff08;一&#xff09;在Linux已经安装好kettle并可以启动kettle &#xff08;二&#xff09;版本&#xff1a;kettle8.2.0 Hive3.1.2 Hadoop3.1.3 &#xff08;三&#…

虹科分享 | 如何通过ntopng流量规则来监控网络流量

让我们假设您有一个网络&#xff0c;其中本地主机生成恒定数量的流量。你如何发现他们是否行为错误&#xff1f;碰巧&#xff0c;一些本地主机行为开始异常&#xff0c;与它们之前相比&#xff0c;有一个异常的流量(发送或接收)&#xff1a;您如何发现这些情况并通过警报报告它…

使用langchain与你自己的数据对话(五):聊天机器人

之前我已经完成了使用langchain与你自己的数据对话的前四篇博客&#xff0c;还没有阅读这四篇博客的朋友可以先阅读一下&#xff1a; 使用langchain与你自己的数据对话(一)&#xff1a;文档加载与切割使用langchain与你自己的数据对话(二)&#xff1a;向量存储与嵌入使用langc…

[Securinets CTF Quals 2023] Admin Service,ret2libc,One is enough

只作了3个pwn&#xff0c;第4个附件没下下来&#xff0c;第5个不会 Admin Service 这是个最简单的题&#xff0c;最后来弄出来。原来只是看过关于maps文件的&#xff0c;一直没什么印象。 题目一开始设置seccomp禁用execv等&#xff0c;看来是用ORW&#xff0c;然后建了个mm…

STM32 4G学习

硬件连接 ATK-IDM750C模块可直接与正点原子 MiniSTM32F103开发板板载的ATK模块接口&#xff08;ATK-MODULE&#xff09;进行连接。 功能说明 ATK-IDM750C是正点原子&#xff08;ALIENTEK&#xff09;团队开发的一款高性能4G Cat1 DTU产品&#xff0c;支持移动4G、联通4G和…

详细介绍golang中.()类型断言的使用方法

文章目录 一、什么是.()用法&#xff1f;二、.()的基本用法三、.()用法的高级应用3.1 nil类型的转换3.2 将函数作为参数传递 四、.()使用中的注意事项五、总结 Golang是一门非常流行的编程语言&#xff0c;在很多领域都有着广泛的应用。在开发过程中&#xff0c;很多时候我们需…

verxriscv中Fpu中的加法器add源码分析

一 加法器端口 case class AddInput() extends Bundle{val source = Source()val rs1, rs2 = FpuFloat(exponentSize = p.internalExponentSize, mantissaSize = p.internalMantissaSize+addExtraBits)val rd = p.rfAddress()val roundMode = FpuRoundMode()val format = p.wit…

华为harmonyos4.0鸿蒙4.0安装谷歌服务框架Play商店,解决从服务器检索信息时出错

8月4号华为手机发布了全新的harmonyos4.0鸿蒙4.0系统&#xff0c;很多人需要问还是不是支持谷歌服务框架&#xff1f;那么答案是肯定的&#xff0c;它和鸿蒙3是一样的&#xff0c;一样的操作&#xff0c;一样的支持安装谷歌服务框架&#xff0c;安装Google play商店。测试机型&…

【新】通达OA前台反序列化漏洞分析

0x01 前言 注&#xff1a;本文仅以安全研究为目的&#xff0c;分享对该漏洞的挖掘过程&#xff0c;文中涉及的所有漏洞均已报送给国家单位&#xff0c;请勿用做非法用途。 通达OA作为历史上出现漏洞较多的OA&#xff0c;在经过多轮的迭代之后已经很少前台的RCE漏洞了。一般来说…

python+requests+json 接口测试思路示例

实际项目中用python脚本实现接口测试的步骤&#xff1a; 1 发送请求&#xff0c;获取响应 》》2 提取响应里的数据&#xff0c;对数据进行必要的处理 》》3 断言响应数据是否与预期一致 以豆瓣接口为例&#xff0c;做一个简单的接口测试吧。使用到的知识涉及requests库&…

Vue3 第三节 计算属性,监视属性,生命周期

1.computed计算属性 2.watch监视函数 3.watchEffect函数 4.Vue的生命周期函数 一.computed计算属性 计算属性简写和完整写法 <template><h1>一个人的信息</h1>姓&#xff1a;<input type"text" v-model"person.firstName" />…

车载A2B总线AD2428主从模式调试问题汇总

一&#xff0c;简介 在实际A2B总线一主一从模式的调试过程中下载程序出现许多报错提示&#xff0c;本文将遇到的错误进行汇总记录&#xff0c;方便相关开发者进行参考。 二&#xff0c;错误现象 2.1 Cable Terminal Shorted to Ground 主机IIS&#xff08;TDM&#xff09;线…

Mir 2.14 正式发布,Ubuntu 使用的 Linux 显示服务器

Canonical 公司最近发布了 Mir 2.14&#xff0c;这是该项目的最新版本。 Mir 2.14 在 Wayland 方面通过 ext-session-lock-v1 协议增加了对屏幕锁定器 (screen lockers) 的支持&#xff0c;并最终支持 Wayland 拖放。此外还整合了渲染平台的实现&#xff0c;放弃了之前在 Raspb…

常见监控网络链路和网络设备的方法

网络监控主要包括网络链路监控和网络设备监控&#xff0c;通常系统运维人员会比较关注。 一、网络链路监控 网络链路监控主要包含三个部分&#xff0c;网络连通性、网络质量、网络流量。 连通性和质量的监控手段非常简单&#xff0c;就是在链路一侧部署探针&#xff0c;去探…

搭建 elasticsearch8.8.2 伪集群 windows

下载windows 版本 elasticsearch8.8.2 以下链接为es 历史版本下载地址&#xff1a; Past Releases of Elastic Stack Software | Elastic windows 单节点建立方案&#xff1a; 下载安装包 elasticsearch-8.8.2-windows-x86_64.zip https://artifacts.elastic.co/download…

设计模式原来是这样

目录 概述: 什么是模式&#xff01;&#xff01; 为什么学习模式&#xff01;&#xff01; 模式和框架的比较&#xff1a; 设计模式研究的历史 关于pattern的历史 Gang of Four(GoF) 关于”Design”Pattern” 重提&#xff1a;指导模式设计的三个概念 1.重用(reuse)…

Linux:shell脚本:基础使用(2)

test命令 格式1&#xff1a;test 条件表达式 格式2&#xff1a;[ 条件表达式 ] (前后至少应有一个空格) 常用的测试操作符 -d&#xff1a;测试是否为目录&#xff08;Directory) -e&#xff1a;测试目录或文件是否存在&#xff08;Exist&#xff09; -f&#xff1a;测试是否…

【C++】Lambda表达式的使用

学习目标&#xff1a; 例如&#xff1a; 了解Lambda的优点 掌握Lambda表达式的使用 了解Lambda表达式的底层原理 学习内容&#xff1a; Lambda表达式的语法 文章目录 学习目标&#xff1a;学习内容&#xff1a;Lambda表达式排序案例Lambda表达式语法捕捉列表Lambda表达式模拟…