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

Docker--(四)--搭建私有仓库(registry、harbor)

  1. 私有仓库----registry官方提供
  2. registry仓库管理(推送、删除、下载)
  3. 私有仓库----harbor私有镜像仓库

1.私有仓库----registry官方提供

Docker hub官方已提供容器镜像registry,用于搭建私有仓库

        1.1   镜像拉取、运行、查看信息、测试

        (一) 拉取镜像

# docker pull daocloud.io/library/registry:latest

        (二)  运行容器

# docker run --name "pri_registry" --restart=always -d -p 5000:5000 daocloud.io/library/registry 

注:如果创建容器不成功,报错防火墙,解决方案如下

#systemctl stop firewalld

#yum install iptables*

#systemctl start iptables

#iptables -F

#systemctl restart docker

        (三)  查看容器

# docker ps  -a 

        (四)   连接容器查看端口状态

# docker exec -it  1f444285bed8  /bin/sh         //这里是sh 不是bash

 /# netstat -lnp                        //查看5000端口是否开启

在本机查看能否访问该私有仓库,看看状态码是不是200:

# curl  -I  127.0.0.1:5000         //参数是大写的i

2.registry仓库管理(推送、删除、下载)

       2.1  修改请求方式为http

默认为https,不改会在往私有仓库上传时报错报以下错误:

# vim /etc/docker/daemon.json

{ "insecure-registries":["192.168.245.136:5000"] }

重启docker: 

# systemctl restart docker

        2.2  仓库功能测试

为了方便,下载1个比较小的镜像,buysbox

# docker pull busybox

上传前必须给镜像打tag  注明ip和端口:

格式: # docker tag  busybox  私有仓库IP:端口/busybox

# docker tag busybox 192.168.245.136:5000/busybox

Mysql是测试的第二个镜像,从daocloud拉取:

# docker pull daocloud.io/library/mysql

# docker tag daocloud.io/library/mysql 192.168.245.136:5000/daocloud.io/library/mysql

注:tag后面可以使用镜像名称也可以使用id,我这里使用的镜像名称,如果使用官方的镜像,不需要加前缀,但是daocloud.io的得加前缀

上传镜像到私有仓库:

# docker push 192.168.26.144:5000/busybox 

# docker push 192.168.26.144:5000/daocloud.io/library/mysql

        2.3   查看私有仓库里的所有镜像

 查看所有镜像:

# curl -X GET http://192.168.26.144:5000/v2/_catalog

查看镜像所有tag:  curl -X GET http://registry_host:5000/v2/<images_name>/tags/list

# curl -X GET http://192.168.26.144:5000/v2/daocloud.io/library/mysql/tags/list

        2.4  删除仓库里的镜像

查看要删除镜像的Digest:

格式: curl  -I -X GET http://registry_host:5000/v2/<images_name>/manifests/<tag>
# curl -I -X GET http://192.168.26.144:5000/v2/daocloud.io/library/mysql/manifests/v2

其中 Docker-Content-Digest的内容为要删除镜像的 Digest

Digset= sha256:46e16271326ceb468caa89217b4c7bc86788168662fdf8bb45bc4dae6da9d0f1

删除镜像:

格式:curl -I -X DELETE http://10.74.234.17:5001/v2/<images_name>/manifests/<Digest>

# curl -I -X DELETE http://192.168.26.144:5001/v2/<images_name>/manifests/<Digest>

        2.5  拉取私有仓库镜像

格式:docker pull 192.168.26.144:5000/<images_name>

# docker pull 192.168.26.144:5000/busybox 

3.私有仓库----harbor私有镜像仓库

        3.1  框架

loadbalancer:做负载均衡(实验时1核1G;生产时16核64G);

harborA和harborB做高可用(实验时4核4G;生产时4核16G);                     

redis:做数据缓存(生产时4核16G);postgresql:做数据库存储(生产时16核64G);  在对harborA/B做nfs(生产时500G)

(实验时放在一台机器上4核4G;)

        3.2  环境准备

        (一)设置redis(redis、nfs、postgresql在同一台机器上)

# yum install epel-release

# yum -y install redis

# systemctl enable --now redis

# vim /etc/redis.conf

bind 192.168.26.176            //监听地址改为本机

requirepass test123!!           //设置密码

#  systemctl restart redis

        (二 )设置nfs(redis、nfs、postgresql在同一台机器上)

#  yum -y install nfs-utils

#  mkdir -p /data/harbor

#  vim  /etc/exports

/data/harbor    192.168.26.0/24(rw,sync,no_root_squash)

#  systemctl enable --now nfs

设置harbor的挂载点:在两台harbor上设置

# mkdir -p  /data/harbor      设置挂载点

#  vim  /etc/fstab

192.168.26.176:/data/harbor    /data/harbor    nfs    defaults    0 0

# mount -a    或者    # mount -t nfs 192.168.26.176:/data/harbor  /data/harbor

#  mount -a 

# df -Th

注意:如果在harbor客户机中挂载nfs时出现这样:

在该机器上安装nfs的驱动程序并启动然后在重新挂载即可:

 # yum -y install nfs-utils

# systemctl start nfs-utils.service

        (三)  设置postgresql(redis、nfs、postgresql在同一台机器上)

# yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm 

# yum install -y postgresql13-server

# /usr/pgsql-13/bin/postgresql-13-setup initdb        //初始化postgresql数据

# systemctl enable --now postgresql-13

# vim /var/lib/pgsql/13/data/postgresql.conf

listen_addresses = '*'                                     //监听全网地址

port = 5432                                                    //放开端口

# vim /var/lib/pgsql/13/data/pg_hba.conf

host    all             all             192.168.26.0/24         md5      //设置可连接网端

# systemctl restart postgresql-13

# su - postgres            //切换用户

-bash-4.2$ psql          //进入postgresql

以下操作在posetgresql中进行

# CREATE DATABASE harbor;

# CREATE DATABASE notary_signer;

# CREATE DATABASE notary_server;

# CREATE USER harbor WITH PASSWORD 'test123!!';

# CREATE USER notary_signer WITH PASSWORD 'test123!!';

# CREATE USER notary_server WITH PASSWORD 'test123!!';

# GRANT ALL PRIVILEGES ON DATABASE harbor TO harbor;

# GRANT ALL PRIVILEGES ON DATABASE notary_signer TO notary_signer;

# GRANT ALL PRIVILEGES ON DATABASE notary_server TO notary_server;

postgres=# \l                               //查看库

postgres=# exit
-bash-4.2$ exit                             //退出

        (四)设置loadbalancer  (使用nginx作为代理)

# vim /etc/yum.repos.d/nginx.repo

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

# yum -y install nginx

# cd /etc/nginx/conf.d

# vim harbor-proxy.conf

upstream harbor-service {
    server <harborA_ipaddress>:80;
    server <harborB_ipaddress>:80;
}

server {
    listen       80;
    server_name  harbor.daemon.com;
    access_log  /var/log/nginx/harbor-loadbalance.access.log  main;

    location / {
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://harbor-service;
    }
}

# systemctl start nginx

        (五)设置harbor-A   harbor-B

安装harbor  对企业内的镜像进行统一的管理,并且harbor还带有 用户管理功能, 并且还具备LDAP用户管理域接入功能;

1.事先在两台harbor机其中安装好docker, 并配置好加速器 (作者的博客中有)

2.安装docker-compose:

# curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# chmod a+x /usr/local/bin/docker-compose

# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

harbor 下载地址:https://github.com/goharbor/harbor/releases/download/v2.5.0/harbor-offline-installer-v2.5.0.tgz

# tar xf harbor-offline-installer-$(VERSION).tgz -C /usr/local/

# cd /usr/local/harbor

# cp harbor.yml.tmpl harbor.yml

# vim harbor.yml

hostname: 192.168.26.174                  //主机名改为本地主机IP

#https:

#  port: 443

#  certificate: /your/certificate/path

#  private_key: /your/private/key/path          //注释https服务

external_url: https://reg.mydomain.com:8433             //修改外部访问url

#database:

#  password: root123

#  max_idle_conns: 100

#  max_open_conns: 900                               //注释掉内部的数据库

data_volume: /data/harbor                            //数据卷使用harbor-A/B  的挂载点

# Uncomment external_database if using external database.        //配置数据库
external_database:
  harbor:
    host: 192.168.26.176
    port: 5432
    db_name: harbor
    username: harbor
    password: test123!!
    ssl_mode: disable
    max_idle_conns: 2
    max_open_conns: 0
    notary_signer:
    host: 192.168.26.176
    port: 5432
    db_name: notary_signer
    username: notary_signer
    password: test123!!
    ssl_mode: disable
    notary_server:
    host: 192.168.26.176
    port: 5432
    db_name: notary_server
    username: notary_server
    password: test123!!
    ssl_mode: disable

# Uncomment external_redis if using external Redis server            //配置redis
external_redis:
  # support redis, redis+sentinel
  # host for redis: <host_redis>:<port_redis>
  # host for redis+sentinel:
  #  <host_sentinel1>:<port_sentinel1>,<host_sentinel2>:<port_sentinel2>,<host_sentinel3>:<port_sentinel3>
  host: 192.168.26.176:6379
  password: test123!!
  # sentinel_master_set must be set to support redis+sentinel
  #sentinel_master_set:
  # db_index 0 is for core, it's unchangeable
  registry_db_index: 1
  jobservice_db_index: 2
  chartmuseum_db_index: 3
  trivy_db_index: 5
  idle_timeout_seconds: 30

下载所需的镜像:  安装前的准备工作  (注意需要开启docker)

# ./prepare

直接安装:

# ./install.sh

观察docker容器是否全部开启: 

# docker ps -a

 harbor-B  做一样的操作在harbor.yml  主机名的IP需要更该

        (六)访问

         

相关文章:

Docker--(四)--搭建私有仓库(registry、harbor)

私有仓库----registry官方提供registry仓库管理&#xff08;推送、删除、下载&#xff09;私有仓库----harbor私有镜像仓库1.私有仓库----registry官方提供 Docker hub官方已提供容器镜像registry,用于搭建私有仓库 1.1 镜像拉取、运行、查看信息、测试 (一) 拉取镜像 # dock…...

Invalid <url-pattern> [sso.action] in filter mapping

Tomcat 8.5.86版本启动web项目报错Caused by: java.lang.IllegalArgumentException: Invalid <url-pattern> [sso.action] in filter mapping 查看项目的web.xml文件相关片段 <filter-mapping><filter-name>SSOFilter</filter-name><url-pattern&g…...

【11】linux命令每日分享——useradd添加用户

大家好&#xff0c;这里是sdust-vrlab&#xff0c;Linux是一种免费使用和自由传播的类UNIX操作系统&#xff0c;Linux的基本思想有两点&#xff1a;一切都是文件&#xff1b;每个文件都有确定的用途&#xff1b;linux涉及到IT行业的方方面面&#xff0c;在我们日常的学习中&…...

Newman+Jenkins实现接口自动化测试

一、是什么Newman Newman就是纽曼手机这个经典牌子&#xff0c;哈哈&#xff0c;开玩笑啦。。。别当真&#xff0c;简单地说Newman就是命令行版的Postman&#xff0c;查看官网地址。 Newman可以使用Postman导出的collection文件直接在命令行运行&#xff0c;把Postman界面化运…...

MySQL:事务+@Transactional注解

事务 本章从了解为什么需要事务到讲述事务的四大特性和概念&#xff0c;最后讲述MySQL中的事务使用语法以及一些需要注意的性质。 再额外讲述一点Springboot中Transactional注解的使用。 1.为什么需要事务&#xff1f; 我们以用户转账为例&#xff0c;假设用户A和用户B的银行账…...

数字IC手撕代码--低功耗设计 Clock Gating

背景介绍芯片功耗组成中&#xff0c;有高达 40%甚至更多是由时钟树消耗掉的。这个结果的原因也很直观&#xff0c;因 为这些时钟树在系统中具有最高的切换频率&#xff0c;而且有很多时钟 buffer&#xff0c;而且为了最小化时钟 延时&#xff0c;它们通常具有很高的驱动强度。 …...

易基因|m6A RNA甲基化研究的数据挖掘思路:干货系列

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。关于m6A甲基化研究思路&#xff08;1&#xff09;整体把握m6A甲基化图谱特征&#xff1a;m6A peak数量变化、m6A修饰基因数量变化、单个基因m6A peak数量分析、m6A peak在基因元件上的分布…...

【微信小程序】-- 页面配置(十八)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &…...

玩好 StarRocks,大厂 offer 接不完!|字节跳动、小红书、京东物流、唯品会、腾讯音乐要的就是你!

求职黄金季即将到来&#xff0c;你准备好迎接你的 dream offer 了吗&#xff1f;StarRocks 自创立以来&#xff0c;一直主张为用户创造极速统一的数据分析新范式&#xff0c;让数据驱动创新&#xff0c;而优秀的大数据人才对推动创新有着至关重要的作用。因此&#xff0c;我们推…...

C# IoC控制反转学习笔记

一、什么是IOC IoC-Invertion of Control&#xff0c;即控制反转&#xff0c;是一种程序设计思想。 先初步了解几个概念&#xff1a; 依赖&#xff08;Dependency&#xff09;&#xff1a;就是有联系&#xff0c;表示一个类依赖于另一个类。 依赖倒置原则&#xff08;DIP&a…...

Python解题 - CSDN周赛第33期

本期四道题全考过&#xff0c;题解在网上也都搜得到。。。没有想法&#xff0c;顺手水一份题解吧。 第一题&#xff1a;奇偶排序 给定一个存放整数的数组&#xff0c;重新排列数组使得数组左边为奇数&#xff0c;右边为偶数。 输入描述&#xff1a;第一行输入整数n。(1<n<…...

Session攻击

Session攻击Session攻击简介主要攻击方式会话预测会话劫持中间人攻击会话固定Session攻击简介 Session对于Web应用是最重要的&#xff0c;也是最复杂的。对于Web应用程序来说&#xff0c;加强安全性的首要原则就是:不要信任来自客户端的数据&#xff0c;一定要进行数据验证以及…...

【Linux】Shell详解

&#x1f60a;&#x1f60a;作者简介&#x1f60a;&#x1f60a; &#xff1a; 大家好&#xff0c;我是南瓜籽&#xff0c;一个在校大二学生&#xff0c;我将会持续分享Java相关知识。 &#x1f389;&#x1f389;个人主页&#x1f389;&#x1f389; &#xff1a; 南瓜籽的主页…...

汉字找不同隐私协议

本隐私信息保护政策版本&#xff1a;2021 V1 一、重要提示 请您&#xff08;以下亦称“用户”&#xff09;在使用本平台App时仔细阅读本协议之全部条款&#xff0c;并确认您已完全理解本协议之规定&#xff0c;尤其是涉及您的重大权益及义务的加粗或划线条款。如您对协议有任…...

CEC2017:斑马优化算法(Zebra Optimization Algorithm,ZOA)求解cec2017(提供MATLAB代码)

一、斑马优化算法 斑马优化算法&#xff08;Zebra Optimization Algorithm&#xff0c;ZOA&#xff09;Eva Trojovsk等人于2022年提出&#xff0c;其模拟斑马的觅食和对捕食者攻击的防御行为。 斑马因身上有起保护作用的斑纹而得名。没有任何动物比斑马的皮毛更与众不同。斑…...

【Linux要笑着学】进程创建 | 进程终止 | slab分派器

爆笑教程《看表情包学Linux》&#x1f448; 猛戳订阅&#xff01;​​​​​​​​​​​​&#x1f4ad; 写在前面&#xff1a;本章我们主要讲解进程的创建与终止。首先讲解进程创建&#xff0c;fork 函数是我们早在讲解 "进程的概念" 章节就提到过的一个函数&#…...

数据资产管理建设思考(二)

关于数据资产管理&#xff0c;近两年是数据治理行业中一个热点话题&#xff0c;当然有我们前面提到的国家的政策支持及方向指引的原因。另一方面我们做数据治理的同行们从学习吸收国外优秀的数据治理理论&#xff0c;进一步在实践中思考如何应用理论&#xff0c;并结合我们国家…...

微软发布多模态版ChatGPT!取名“宇宙一代”

文&#xff5c;CoCo酱Ludwig Wittgenstein曾说过&#xff1a;“我语言的局限&#xff0c;即是我世界的局限”。大型语言模型&#xff08;LLM&#xff09;已成功地作为各种自然语言任务的通用接口&#xff0c;只要我们能够将输入和输出转换为文本&#xff0c;就可以将基于LLM的接…...

【学习笔记】深入理解JVM之对象的实例化

参考尚硅谷JVM 102 - 106 集 首发地址&#xff1a;地址 1、JVM对象的实例化 1.1 对象的创建方式 对象有一下几种创建对象的方式 new Object object new Object();Class的newInstance() Object object Object.class.newInstance();Constructor的newInstance&#xff08…...

IP协议的漏洞及防护措施

文章目录一、TCP/IP协议族二、IP协议三、IP协议的安全问题及防护措施一、TCP/IP协议族 二、IP协议 网际协议&#xff08;Internet Protocol&#xff0c;IP&#xff09;是TCP/IP协议族的核心&#xff0c;也是网际层最重要的协议。 IP数据报由首部和数据两部分组成&#xff1b…...

Linux命令·mkdir

linux mkdir 命令用来创建指定的名称的目录&#xff0c;要求创建目录的用户在当前目录中具有写权限&#xff0c;并且指定的目录名不能是当前目录中已有的目录。1&#xff0e;命令格式&#xff1a;mkdir [选项] 目录...2&#xff0e;命令功能&#xff1a;通过 mkdir 命令可以实现…...

智能家居项目(八)之树莓派+摄像头进行人脸识别

目录 1、编辑Camera.c 2、编辑contrlDevices.h 3、编辑mainPro.c 4、进行编译&#xff1a; 5、运行结果&#xff1a; ./test1 6、项目图片演示 智能家居项目&#xff08;七&#xff09;之Libcurl库与HTTPS协议实现人脸识别_Love小羽的博客-CSDN博客 经过上一篇文章&…...

渗透测试之地基服务篇:无线攻防之钓鱼无线攻击(上)

简介 渗透测试-地基篇 该篇章目的是重新牢固地基&#xff0c;加强每日训练操作的笔记&#xff0c;在记录地基笔记中会有很多跳跃性思维的操作和方式方法&#xff0c;望大家能共同加油学到东西。 请注意 &#xff1a; 本文仅用于技术讨论与研究&#xff0c;对于所有笔记中复现…...

「ABAP」一文带你入门OPEN SQL中的SELECT查询(附超详细案例解析)

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后…...

【搞透C语言指针】那年我双手插兜, 不知道指针是我的对手

☃️内容专栏&#xff1a;【C语言】进阶部分 ☃️本文概括&#xff1a; 征服C语言指针&#xff01;一篇文章搞清楚指针的全部要点。 ☃️本文作者&#xff1a;花香碟自来_ ☃️发布时间&#xff1a;2023.3.3 目录 一、字符指针 二、指针数组 三、数组指针 1.数组指针的定义…...

如何从 Android 手机上的 SD 卡恢复已删除的照片

为了扩展手机的存储空间&#xff0c;很多人都会在安卓手机上插入一张SD卡来存储一些大文件&#xff0c;比如电影、照片、视频等。虽然SD卡给我们带来了很大的方便&#xff0c;但我们还是避免不了数据丢失一些事故造成的。您是否正在为 SD 卡上的照片意外丢失而苦恼&#xff1f;…...

01-前端-htmlcss

文章目录HTML&CSS1&#xff0c;HTML1.1 介绍1.2 快速入门1.3 基础标签1.3.1 标题标签1.3.2 hr标签1.3.3 字体标签1.3.4 换行标签1.3.5 段落标签1.3.6 加粗、斜体、下划线标签1.3.7 居中标签1.3.8 案例1.4 图片、音频、视频标签1.5 超链接标签1.6 列表标签1.7 表格标签1.8 布…...

【YOLO系列】YOLOv5超详细解读(网络详解)

前言 吼吼&#xff01;终于来到了YOLOv5啦&#xff01; 首先&#xff0c;一个热知识&#xff1a;YOLOv5没有发表正式论文哦~ 为什么呢&#xff1f;可能YOLOv5项目的作者Glenn Jocher还在吃帽子吧&#xff0c;hh 目录 前言 一、YOLOv5的网络结构 二、输入端 &#xff08;1…...

从 ChatGPT 爆火回溯 NLP 技术

ChatGPT 火遍了全网&#xff0c;多个话题频频登上热搜。见证了自然语言处理&#xff08;NLP&#xff09;技术的重大突破&#xff0c;体验到通用技术的无限魅力。GPT 模型是一种 NLP 模型&#xff0c;使用多层变换器&#xff08;Transformer&#xff09;来预测下一个单词的概率分…...

面了 6 家大厂,并拿下 5 家 offer,进大厂好像也没有那么困难吧....

前言 二月份的时候因为换工作的缘故&#xff0c;陆续参加了华为、蚂蚁、字节跳动、PDD、百度、Paypal 的社招面试&#xff0c;除了字节跳动流程较长&#xff0c;我主动结束面试以外&#xff0c;其他的都顺利拿到了 Offer。 最近时间稍微宽裕点了&#xff0c;写个面经&#xf…...

ih5网站制作平台/百度首页百度一下

用oracle sql对数字进行操作: 取上取整、向下取整、保留N位小数、四舍五入、数字格式化取整&#xff08;向下取整&#xff09;&#xff1a; select floor(5.534) from dual;select trunc(5.534) from dual;上面两种用法都可以对数字5.534向下取整&#xff0c;结果为5. 如果要向…...

邢台市政/外贸seo推广

开头 大家好&#xff0c;我是G哥&#xff0c;目前人在荆州办事&#xff0c;但是干货还是要安排上&#xff01; 国外有一个爆火的开发人员学习路线&#xff0c;目前已经在 Github收获了 131 k star&#xff0c;Star 数量在 Github 所有仓库中排名第 9 。这个仓库有多火就不用说…...

wordpress文章如何调整字体/广告咨询

与WifiMonitor.java负责监控supplicant状态不同&#xff0c;WifiService.java负责给supplicant下命令&#xff0c;WifiService.java是framework中wifi的核心模块。1 WifiService是server端&#xff0c;WifiManager是client端WifiService处理WifiManager发来的各种命令2 AsyncCh…...

网站建设步骤 教 程/优化科技

1) 字符串指针变量是个变量&#xff0c;指向字符串的首地址&#xff1b;而字符串数组名是个常量&#xff0c;为字符串数组第一个元素的地址&#xff1b;2)字符串指针变量可以赋值&#xff0c;而字符串数组名不能赋值&#xff1b;对于字符数组只能对各个元素赋值&#xff0c;不能…...

做网站哪家公司最好/seo优化网站网页教学

一 常见容错场景分析1.1作业某个任务阻塞了&#xff0c;长时间占用资源不释放1.2在MapTask任务运行完毕&#xff0c;ReduceTask运行过程中&#xff0c;某个MapTask节点挂了&#xff0c;或者某个MapTask结果存放的那磁盘坏掉了二 作业某个任务阻塞了&#xff0c;长时间占用资源不…...

天元建设集团有限公司重庆分公司/东莞seo黑帽培训

前言 随着业务和大数据技术的发展&#xff0c;越来越多的公司需要在后端架设Hbase数据库&#xff0c;而原有的业务则需要从各种RDBMS数据库中迁移到Hbase当中。Appach的sqoop&#xff08;发音&#xff1a;[skup]&#xff09;就是基于这样的需求而诞生的&#xff0c;本文详细记…...