搭建企业级私有仓库harbor

news2024/12/22 15:23:50

华子目录

  • `harbor`简介
  • 实验环境准备
    • 下载软件包
    • 安装`docker-ce`
    • hosts解析
  • 实验步骤
    • 配置https加密传输
    • 解压
    • 进入解压目录,修改文件配置
    • 启动`harbor`
  • 测试
    • 客户端配置`harbor本地加速器`
    • 注意
  • 通过`docker compose`管理`harbor`

harbor简介

harbor是由wmware公司开源的企业级docker registry项目

它提供了以下主要功能和特点:

  1. 基于角色访问控制RBAC):可以为不同的用户用户组分配不同的权限,增强了安全性和管理的灵活性
  2. 惊醒复制:支持在不同的harbor实例之间复制镜像,方便在多个数据中心或环境中分发镜像
  3. 图形化用户界面UI):提供了直观的web界面,便于管理镜像仓库、项目、用户等。
  4. 审计日志:记录了对镜像仓库各种操作,有助于追踪和审查活动
  5. 垃圾回收:可以清理不再使用的镜像节约存储空间

实验环境准备

下载软件包

  • 网址:https://github.com/goharbor/harbor/releases

在这里插入图片描述

这里我们选择v2.5.4版本
在这里插入图片描述
选择.tgz的包,进行下载

安装docker-ce

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


[root@docker-harbor ~]# systemctl enable --now docker

hosts解析

[root@docker-harbor ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.254.139  reg.huazi.com

实验步骤

配置https加密传输

  • 证书key
[root@docker-harbor ~]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/huazi.com.key -addext "subjectAltName = DNS:reg.huazi.com" -x509 -days 365 -out certs/huazi.com.crt
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:shanxi
Locality Name (eg, city) [Default City]:xi'an
Organization Name (eg, company) [Default Company Ltd]:docker
Organizational Unit Name (eg, section) []:registry
Common Name (eg, your name or your server's hostname) []:reg.huazi.com
Email Address []:admin@huazi.com



[root@docker-harbor ~]# cd certs/
[root@docker-harbor certs]# ls
huazi.com.crt  huazi.com.key
[root@docker-harbor certs]#
  • 证书位置/root/certs/huazi.com.crt
  • key位置/root/certs/huazi.com.key

客户端获取harbor端的证书

[root@docker-harbor ~]# mkdir -p /etc/docker/certs.d/reg.huazi.com/
[root@docker-harbor ~]# cp /root/certs/huazi.com.crt /etc/docker/certs.d/reg.huazi.com/ca.crt

[root@docker-harbor ~]# systemctl restart docker

解压

[root@docker-harbor ~]# tar -zxvf harbor-offline-installer-v2.5.4.tgz
harbor/harbor.v2.5.4.tar.gz
harbor/prepare
harbor/LICENSE
harbor/install.sh
harbor/common.sh
harbor/harbor.yml.tmpl

进入解压目录,修改文件配置

[root@docker-harbor ~]# cd harbor/
[root@docker-harbor harbor]# ls
common.sh  harbor.v2.5.4.tar.gz  harbor.yml.tmpl  install.sh  LICENSE  prepare


[root@docker-harbor harbor]# cp harbor.yml.tmpl harbor.yml


[root@docker-harbor harbor]# ls
common.sh  harbor.v2.5.4.tar.gz  harbor.yml  harbor.yml.tmpl  install.sh  LICENSE  prepare

#其中harbor.v2.5.4.tar.gz是一个镜像包
[root@docker-harbor harbor]# vim harbor.yml

在这里插入图片描述

在这里插入图片描述

hostname: reg.huazi.com

# http related config
http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  port: 80

# https related config
https:
  # https port for harbor, default is 443
  port: 443
  # The path of cert and key files for nginx
  certificate: /root/certs/huazi.com.crt
  private_key: /root/certs/huazi.com.key
  # enable strong ssl ciphers (default: false)
  # strong_ssl_ciphers: false


harbor_admin_password: 123456

启动harbor

[root@docker-harbor harbor]# ./install.sh --help

Note: Please set hostname and other necessary attributes in harbor.yml first. DO NOT use localhost or 127.0.0.1 for hostname, because Harbor needs to be accessed by external clients.
Please set --with-notary if needs enable Notary in Harbor, and set ui_url_protocol/ssl_cert/ssl_cert_key in harbor.yml bacause notary must run under https.
Please set --with-trivy if needs enable Trivy in Harbor
Please set --with-chartmuseum if needs enable Chartmuseum in Harbor
  1. 设置主机名和其他必要属性

    • 确实,您需要在harbor.yml文件中设置主机名(hostname)和其他必要的配置属性。
    • 主机名不应设置为localhost127.0.0.1,因为Harbor需要能够被外部客户端访问。
  2. 关于Notary

    • 注意:根据Harbor最新文档Notary可能已经被弃用或不再是Harbor核心组件。在配置Harbor时,如果您看到关于Notary的文档或选项,请确保它们与您正在使用的Harbor版本保持一致。如果Notary已被弃用,则不应再尝试启用它。
    • 如果您的Harbor版本仍然支持Notary,并且您需要在Harbor中启用它,那么您可能需要在安装或配置Harbor时添加--with-notary选项(尽管这取决于您的Harbor版本)。但是,由于Notary需要HTTPS,您还必须在harbor.yml中设置ui_url_protocolhttps,并提供有效的SSL证书(ssl_certssl_cert_key)。
  3. 关于Trivy

    • 如果您需要在Harbor中启用Trivy(一个用于容器镜像漏洞扫描器),请在安装或配置Harbor时添加--with-trivy选项。
  4. 关于Chartmuseum

    • 注意:同样地,根据Harbor最新文档Chartmuseum可能已经被整合为Harbor的一个内置组件,或者作为可选插件提供,或者已经完全被另一个组件取代。请查阅您正在使用的Harbor版本的官方文档以获取准确信息。
    • 如果您的Harbor版本仍然支持Chartmuseum作为独立组件,并且您需要在Harbor中启用它,那么您可能需要在安装或配置Harbor时添加--with-chartmuseum选项。但是,请注意,如果Chartmuseum已被整合或取代,则此选项可能不再有效。

这里我们需要Chartmuseum组件

[root@docker-harbor harbor]# ./install.sh --with-chartmuseum

[Step 0]: checking if docker is installed ...

Note: docker version: 27.3.1

[Step 1]: checking docker-compose is installed ...

Note: Docker Compose version v2.29.7

[Step 2]: loading Harbor images ...
......
......
......
[+] Running 12/12
 ✔ Network harbor_harbor-chartmuseum  Created                                            0.1s
 ✔ Network harbor_harbor              Created                                            0.1s
 ✔ Container harbor-log               Started                                            0.4s
 ✔ Container harbor-portal            Started                                            1.4s
 ✔ Container chartmuseum              Started                                            1.1s
 ✔ Container redis                    Started                                            1.5s
 ✔ Container registry                 Started                                            1.4s
 ✔ Container registryctl              Started                                            1.2s
 ✔ Container harbor-db                Started                                            1.4s
 ✔ Container harbor-core              Started                                            1.8s
 ✔ Container harbor-jobservice        Started                                            2.3s
 ✔ Container nginx                    Started                                            2.3s
✔ ----Harbor has been installed and started successfully.----


[root@docker-harbor harbor]# ls
common     docker-compose.yml    harbor.yml       install.sh  prepare
common.sh  harbor.v2.5.4.tar.gz  harbor.yml.tmpl  LICENSE
  • 当执行完后,我们发现出现了docker-compose.yml文件,这时就可以使用docker compose工具管理harbor后台
[root@docker-harbor harbor]# docker images
REPOSITORY                      TAG       IMAGE ID       CREATED       SIZE
goharbor/harbor-exporter        v2.5.4    388b5ac2eed4   2 years ago   87.4MB
goharbor/chartmuseum-photon     v2.5.4    e5134e6ca037   2 years ago   231MB
goharbor/redis-photon           v2.5.4    c89d59625d5a   2 years ago   155MB
goharbor/trivy-adapter-photon   v2.5.4    1142826e8329   2 years ago   251MB
goharbor/notary-server-photon   v2.5.4    e542ccac08c2   2 years ago   112MB
goharbor/notary-signer-photon   v2.5.4    65644cf6aaa1   2 years ago   109MB
goharbor/harbor-registryctl     v2.5.4    984f0c8cd458   2 years ago   136MB
goharbor/registry-photon        v2.5.4    5e2d95b5227f   2 years ago   78.1MB
goharbor/nginx-photon           v2.5.4    0e682f78c76f   2 years ago   154MB
goharbor/harbor-log             v2.5.4    1c30eb78ebc4   2 years ago   161MB
goharbor/harbor-jobservice      v2.5.4    01ec4f1c5ddd   2 years ago   233MB
goharbor/harbor-core            v2.5.4    fb4df7c64e84   2 years ago   208MB
goharbor/harbor-portal          v2.5.4    bba3d21bc4b9   2 years ago   162MB
goharbor/harbor-db              v2.5.4    76e7b3295f2b   2 years ago   225MB
goharbor/prepare                v2.5.4    5582f3ef9fbe   2 years ago   163MB
[root@docker-harbor harbor]# docker ps
CONTAINER ID   IMAGE                                COMMAND                   CREATED              STATUS                        PORTS                                                                                NAMES
9750c866f450   goharbor/nginx-photon:v2.5.4         "nginx -g 'daemon of…"   About a minute ago   Up About a minute (healthy)   0.0.0.0:80->8080/tcp, [::]:80->8080/tcp, 0.0.0.0:443->8443/tcp, [::]:443->8443/tcp   nginx
7d2a693579de   goharbor/harbor-jobservice:v2.5.4    "/harbor/entrypoint.…"   About a minute ago   Up About a minute (healthy)                                                                                        harbor-jobservice
569947c42e90   goharbor/harbor-core:v2.5.4          "/harbor/entrypoint.…"   About a minute ago   Up About a minute (healthy)                                                                                        harbor-core
8ef39f2a9087   goharbor/harbor-registryctl:v2.5.4   "/home/harbor/start.…"   About a minute ago   Up About a minute (healthy)                                                                                        registryctl
ce6c6ddef843   goharbor/chartmuseum-photon:v2.5.4   "./docker-entrypoint…"   About a minute ago   Up About a minute (healthy)                                                                                        chartmuseum
f2aaf4d9bdda   goharbor/registry-photon:v2.5.4      "/home/harbor/entryp…"   About a minute ago   Up About a minute (healthy)                                                                                        registry
2f9cb0b7d2d6   goharbor/redis-photon:v2.5.4         "redis-server /etc/r…"   About a minute ago   Up About a minute (healthy)                                                                                        redis
1de7bf425061   goharbor/harbor-db:v2.5.4            "/docker-entrypoint.…"   About a minute ago   Up About a minute (healthy)                                                                                        harbor-db
ee52470792cd   goharbor/harbor-portal:v2.5.4        "nginx -g 'daemon of…"   About a minute ago   Up About a minute (healthy)                                                                                        harbor-portal
497e949edfa7   goharbor/harbor-log:v2.5.4           "/bin/sh -c /usr/loc…"   About a minute ago   Up About a minute (healthy)   127.0.0.1:1514->10514/tcp                                                            harbor-log

此时容器会被自动开启

测试

在这里插入图片描述
在这里插入图片描述

  • 新建一个项目

在这里插入图片描述
在这里插入图片描述

  • huazi项目中目前没有镜像

在这里插入图片描述

客户端配置harbor本地加速器

[root@docker-harbor docker]# cd /etc/docker/
[root@docker-harbor docker]# vim daemon.json
{
  "registry-mirrors": ["https://reg.huazi.com"]
}


[root@docker-harbor docker]# systemctl restart docker
  • 客户端登录到harbor仓库
[root@docker-harbor harbor]# docker login reg.huazi.com
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credential-stores

Login Succeeded
  • 上传镜像(上传到reg.huazi.com网址中的huazi目录下)
[root@docker-harbor ~]# docker images
timinglee/mario                 latest    9a35a9e43e8c   9 years ago   198MB

[root@docker-harbor docker]# docker   tag   timinglee/mario:latest    reg.huazi.com/huazi/mario

[root@docker-harbor ~]# docker images
timinglee/mario                 latest    9a35a9e43e8c   9 years ago   198MB
reg.huazi.com/huazi/mario       latest    9a35a9e43e8c   9 years ago   198MB


#上传成功
[root@docker-harbor docker]# docker push reg.huazi.com/huazi/mario
Using default tag: latest
The push refers to repository [reg.huazi.com/huazi/mario]
5f70bf18a086: Pushed
44e5704d49fb: Pushed
dbe97b1b7330: Pushed
90222f49bc4c: Pushed
708fd576a927: Pushed
4aeeaca5ce76: Pushed
latest: digest: sha256:f4a933fb5a431e84e3d2623bfaa776c0d973d572b6db0a0b16dc243ffc7bcfa1 size: 2392
  • huazi目录下发现上传的镜像
    在这里插入图片描述
  • 上传镜像(上传到reg.huazi.com网址中的library目录下)
[root@docker-harbor docker]# docker  tag   timinglee/mario:latest   reg.huazi.com/library/chaojimali

[root@docker-harbor docker]# docker images
reg.huazi.com/library/chaojimali   latest    9a35a9e43e8c   9 years ago   198MB

#发现上传成功
[root@docker-harbor docker]# docker push reg.huazi.com/library/chaojimali
Using default tag: latest
The push refers to repository [reg.huazi.com/library/chaojimali]
5f70bf18a086: Pushed
44e5704d49fb: Pushed
dbe97b1b7330: Pushed
90222f49bc4c: Pushed
708fd576a927: Pushed
4aeeaca5ce76: Pushed
latest: digest: sha256:f4a933fb5a431e84e3d2623bfaa776c0d973d572b6db0a0b16dc243ffc7bcfa1 size: 2392
  • library目录下发现上传的镜像
    在这里插入图片描述

注意

  • docker tag时,harbor仓库网址名称项目名称一定要正确,否则上传会失败
  • harbor仓库搭建成功后,默认会有一个管理员账户admin

删掉这个chaojimali镜像后,重新拉取

[root@docker-harbor docker]# docker rmi reg.huazi.com/library/chaojimali:latest
Untagged: reg.huazi.com/library/chaojimali:latest
Untagged: reg.huazi.com/library/chaojimali@sha256:f4a933fb5a431e84e3d2623bfaa776c0d973d572b6db0a0b16dc243ffc7bcfa1
[root@docker-harbor docker]# docker pull chaojimali
Using default tag: latest
latest: Pulling from library/chaojimali
Digest: sha256:f4a933fb5a431e84e3d2623bfaa776c0d973d572b6db0a0b16dc243ffc7bcfa1
Status: Downloaded newer image for chaojimali:latest
docker.io/library/chaojimali:latest
[root@docker-harbor docker]# docker images
chaojimali                      latest    9a35a9e43e8c   9 years ago   198MB

通过docker compose管理harbor

  • docker compose down停止并删除容器
[root@docker-harbor harbor]# docker compose down
WARN[0000] /root/harbor/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
[+] Running 12/12
 ✔ Container harbor-jobservice        Removed                                            0.1s
 ✔ Container chartmuseum              Removed                                            0.1s
 ✔ Container nginx                    Removed                                            0.2s
 ✔ Container registryctl              Removed                                           10.1s
 ✔ Container harbor-portal            Removed                                            0.1s
 ✔ Container harbor-core              Removed                                            0.1s
 ✔ Container harbor-db                Removed                                            0.1s
 ✔ Container registry                 Removed                                            0.1s
 ✔ Container redis                    Removed                                            0.2s
 ✔ Container harbor-log               Removed                                           10.1s
 ✔ Network harbor_harbor              Removed                                            0.1s
 ✔ Network harbor_harbor-chartmuseum  Removed                                            0.1s
  • docker compose up -d启动容器
  • -d后台运行
[root@docker-harbor harbor]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

[root@docker-harbor harbor]# docker compose up -d
WARN[0000] /root/harbor/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
[+] Running 12/12
 ✔ Network harbor_harbor-chartmuseum  Created                                            0.1s
 ✔ Network harbor_harbor              Created                                            0.1s
 ✔ Container harbor-log               Started                                            0.3s
 ✔ Container harbor-db                Started                                            1.0s
 ✔ Container chartmuseum              Started                                            0.9s
 ✔ Container registry                 Started                                            1.1s
 ✔ Container registryctl              Started                                            1.0s
 ✔ Container harbor-portal            Started                                            0.9s
 ✔ Container redis                    Started                                            1.1s
 ✔ Container harbor-core              Started                                            1.4s
 ✔ Container harbor-jobservice        Started                                            1.7s
 ✔ Container nginx                    Started                                            1.8s
[root@docker-harbor harbor]#
[root@docker-harbor harbor]# docker ps
CONTAINER ID   IMAGE                                COMMAND                   CREATED          STATUS                             PORTS                                                                                NAMES
61e8a6e26ad5   goharbor/nginx-photon:v2.5.4         "nginx -g 'daemon of…"   19 seconds ago   Up 17 seconds (health: starting)   0.0.0.0:80->8080/tcp, [::]:80->8080/tcp, 0.0.0.0:443->8443/tcp, [::]:443->8443/tcp   nginx
fa10c0be1ad3   goharbor/harbor-jobservice:v2.5.4    "/harbor/entrypoint.…"   19 seconds ago   Up 17 seconds (health: starting)                                                                                        harbor-jobservice
cbd69a01ce0d   goharbor/harbor-core:v2.5.4          "/harbor/entrypoint.…"   19 seconds ago   Up 18 seconds (health: starting)                                                                                        harbor-core
4352cec1c54b   goharbor/harbor-registryctl:v2.5.4   "/home/harbor/start.…"   19 seconds ago   Up 18 seconds (health: starting)                                                                                        registryctl
b4568f0c1d07   goharbor/chartmuseum-photon:v2.5.4   "./docker-entrypoint…"   19 seconds ago   Up 18 seconds (health: starting)                                                                                        chartmuseum
eed6568a9ea5   goharbor/redis-photon:v2.5.4         "redis-server /etc/r…"   19 seconds ago   Up 18 seconds (health: starting)                                                                                        redis
ff667909ae29   goharbor/registry-photon:v2.5.4      "/home/harbor/entryp…"   19 seconds ago   Up 18 seconds (health: starting)                                                                                        registry
132db9f5db03   goharbor/harbor-db:v2.5.4            "/docker-entrypoint.…"   19 seconds ago   Up 18 seconds (health: starting)                                                                                        harbor-db
287bc1e29cdf   goharbor/harbor-portal:v2.5.4        "nginx -g 'daemon of…"   19 seconds ago   Up 18 seconds (health: starting)                                                                                        harbor-portal
255ae63496e6   goharbor/harbor-log:v2.5.4           "/bin/sh -c /usr/loc…"   19 seconds ago   Up 19 seconds (health: starting)   127.0.0.1:1514->10514/tcp                                                            harbor-log

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

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

相关文章

LLM基础概念:Token

什么是token?为什么要限制token的输入?平时说的消耗token数指的是什么? token是用于自然语言处理的词的片段。 在自然语言处理模型中,限制token数量主要是出于计算效率和资源限制的考虑。每一个token都对应一个向量,…

Linux gadget 模拟触控屏 支持多点触控

通过gadget命令行生成hid设备 下面xxx自己根据需要修改,例如VID,PID,产品名称 const char *INSTALL_GADGET_CMDS[] {"modprobe libcomposite","mkdir /sys/kernel/config/usb_gadget/g1","echo xxx > /sys/kernel/config/…

github项目--crawl4ai

github项目--crawl4ai 输出html输出markdown格式输出结构化数据与BeautifulSoup的对比 crawl4ai github上这个项目,没记错的话,昨天涨了3000多的star,今天又新增2000star。一款抓取和解析工具,简单写个demo感受下 这里我们使用cra…

衡水中学资料大全-重构版(状元、学霸笔记)

文章目录 一、衡水中学:教育界的璀璨明珠二、状元笔记:学霸的智慧传承三、学霸笔记:高效学习的秘籍四、全面复习资料:覆盖所有考点五、思维导图:构建知识框架六、获取方式 一、衡水中学:教育界的璀璨明珠 …

【React】入门Day01 —— 从基础概念到实战应用

目录 一、React 概述 二、开发环境创建 三、JSX 基础 四、React 的事件绑定 五、React 组件基础使用 六、组件状态管理 - useState 七、组件的基础样式处理 快速入门 – React 中文文档 一、React 概述 React 是什么 由 Meta 公司开发,是用于构建 Web 和原生…

语音转文字免费利器:助力高效办公与学习

语音转文字免费的软件如同一股清流,让我们能够更轻松地将语音信息转化为可编辑的文字内容。今天我们一起来分析它们的功能、特点以及如何为我们的生活和工作带来便利。 1.365在线转文字 链接直达:https://www.pdf365.cn/ 这是一个功能强大的在线工具…

网站集群批量管理-密钥认证与Ansible模块

一、集群批量管理-密钥认证 1、概述 管理更加轻松:两个节点,通过密钥形式进行访问,不需要输入密码,仅支持单向. 服务要求(应用场景): 一些服务在使用前要求我们做秘钥认证.手动写批量管理脚本. 名字: 密钥认证,免密码登录,双机互信. 2、原理 税钥对…

MySQL 的复制延迟:理解与解决方案

一、什么是 MySQL 的复制延迟? 在 MySQL 数据库中,复制是一种将数据从一个数据库服务器(主服务器)复制到一个或多个数据库服务器(从服务器)的机制。复制延迟指的是主服务器上的数据更改与这些更改在从服务…

DBeaver显示PostgreSQL数据库的信息模式

DBeaver连接PostgreSQL数据库后,默认情况下是不加载信息模式的,如果有需要,我们可以通过设置显示信息模式。 具体步骤:点击数据库连接–>右键打开设置–>连接设置–>常规–>导航视图–>自定义–>勾选显示系统对…

Python 基于 flask 的前程无忧招聘可视化系统,Python大数据招聘爬虫可视化分析

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

springboot的调度服务与异步服务实操

1.调度服务 1.1.JDK之ScheduledExecutorService 讲到调度任务,我们脑海里马上会想到ScheduledExecutorService。 ScheduledExecutorService是 Java java.util.concurrent 包中的一个接口,它继承自 ExecutorService 接口。它主要用于在给定的延迟后运行…

计算机毕业设计Python+Spark知识图谱微博舆情预测 微博推荐系统 微博可视化 微博数据分析 微博大数据 微博爬虫 Hadoop 大数据毕业设计

《PythonSpark知识图谱微博舆情预测》开题报告 一、课题背景与意义 随着互联网技术的飞速发展,社交媒体平台如微博已成为人们表达观点、交流信息的重要渠道。微博每天产生海量的数据,这些数据中蕴含着丰富的社会情绪、事件动态等信息,对于政…

从概念到使用全面了解Llama 3 这个迄今为止最强大的开源模型

概述 mate最近发布了 Llama3,下一代最先进的开源大语言模型(LLM)。正如本文的综合评论所述,Llama 3 以其前身奠定的基础为基础,旨在增强 Llama 2 成为 ChatGPT 重要开源竞争对手的能力 Llama 2:深入探讨 C…

【更新】红色文化之红色博物馆数据集(经纬度+地址)

数据简介:红色博物馆作为国家红色文化传承与爱国主义教育的重要基地,遍布全国各地,承载着丰富的革命历史与文化记忆。本数据说明旨在汇总并分析全国范围内具有代表性的红色博物馆的基本信息,包括其地址、特色及教育意义&#xff0…

Scrapy框架入门

一、Scrapy简介 Scrapy是一款快速而强大的web爬虫框架,基于Twisted的异步处理框架、Twisted是事件驱动的。 Scrapy是由python实现的爬虫框架:架构清晰、可扩展性强、可以灵活完成需求。 一、Scrapy应用 scrapy及其他模块的安装 pip3 install scrapy…

【Java编程系列】使用java接入Microsoft Graph,实现发送邮件功能

1、前言 微软与2022年10月1号,开始停止了部分服务的 basic auth (账密登录)功能,需要改用 oauth2.0 协议接入相应服务。邮件方面主要在于IMAP和pop协议。并且与2023年1月1日时,正式全面停止账密登录使用去接入上述服务…

【Python报错已解决】[notice] A new release of pip available: 22.2 -> 22.2.2

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

共享单车轨迹数据分析:以厦门市共享单车数据为例(九)

副标题:基于站点800m范围内评价指标探究——以吕厝站为例 上篇文章我们以厦门市为例,来通过POI和优劣解距离法(TOPSIS)来研究厦门岛内以800m作为辐射范围的地铁站哪些地铁站发展的最好,根据综合得分指数可以知道&…

架构设计笔记-5-软件工程基础知识-2

知识要点 构件组装是将库中的构件经适当修改后相互连接,或者将它们与当前开发项目中的软件元素连接,最终构成新的目标软件。 构件组装技术大体可分为: 1. 基于功能的组装技术:基于功能的组装技术采用子程序调用和参数传递的方式将构件组装起来。它要求库中的构件以子程序…

KPaaS集成平台与传统集成有什么不同?

企业的业务系统越来越复杂,集成需求也日益增长,同时也面临着如何高效、低成本地实现多系统集成的挑战。传统集成方式虽然能够提供高度定制化的解决方案,但其高昂的成本、复杂的实施过程以及后续的维护难题却让许多企业望而却步。在这样的背景…