Docker私有仓库与Harbor部署使用

目录

一、本地私有仓库

1. 下载registry镜像

2. 在daemon.json文件中添加私有镜像仓库地址

​编辑

3. 运行registry容器 

4. Docker容器的重启策略如下 

5. 为镜像打标签

6. 上传到私有仓库

7. 列出私有仓库的所有镜像

8. 列出私有仓库的centos镜像有哪些tag

9. 先删除原有的centos镜像,再测试私有仓库下载 ’

二、Harbor

1. Harbor简介

2. Harbor的特性

3. Harbor的构成

4. Harbor部署

4.1 服务器设置

4.2 部署Docker-Compose服务

4.3 部署Harbor

4.3.1 下载或上传Harbor安装程序

4.3.2 修改harbor安装的配置文件  

4.4 harbor.cfg配置文件中的两类参数

4.4.1 所需参数

4.4.2 可选参数

4.5 启动harbor

4.6 查看harbor启动镜像

4.7 创建一个新项目

4.7.1 登录Harbor

4.7.2 下载镜像进行测试 

4.7.3 将镜像打标签

4.7.4 上传镜像到Harbor 

4.7.5 web查看project状态 

4.8 在其他客户端上传镜像

4.8.1 在Docker客户端配置操作

4.8.2 重启Docker,再次登录

4.8.3 再次登录Harbor

4.8.4 下载镜像进行测试 

4.8.5 上传镜像进行测试 

5. 维护管理Harbor

5.1 通过Harbor Web创建项目

5.2 创建 Harbor 用户

5.2.1 创建用户并分配权限

5.2.2 添加项目成员

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

​编辑 5.3 修改harbor.cfg配置文件、

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

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

 

 

 

 

 

 


一、本地私有仓库

1. 下载registry镜像

[root@docker ~]# docker pull registry
[root@docker ~]# docker images

 

2. 在daemon.json文件中添加私有镜像仓库地址

[root@docker ~]# vim /etc/docker/daemon.json {"registry-mirrors": ["https://n1x922iy.mirror.aliyuncs.com"],"insecure-registries": ["192.168.80.115:5000"]
}[root@docker ~]# systemctl restart docker.service 

3. 运行registry容器 

[root@docker ~]# docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE             COMMAND                  CREATED         STATUS         PORTS                                       NAMES
ea1409afd421   registry:latest   "/entrypoint.sh /etc…"   5 seconds ago   Up 4 seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   registry

 

 

-itd:在容器中打开一个伪终端进行交互操作,并在后台运行

-v:把宿主机的/data/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化

-p:映射端口,访问宿主机的5000端口就访问到registry容器的服务了

--restart=always:这是重启的策略,在容器退出时总是重启容器

--name registry:创建容器命名为registry registry:latest:这个是刚才pull下来的镜像

4. Docker容器的重启策略如下 

no:默认策略。在容器退出时不重启容器

no-failure:在容器非正常退出时(退出状态非0),才会重启容器

no-failure:3:在容器非正常退出时重启容器,最多重启3次

always:在容器退出时总是重启容器

unless-stopped:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

5. 为镜像打标签

[root@docker ~]# docker tag centos:7 192.168.80.115:5000/centos:test1
[root@docker ~]# docker images

6. 上传到私有仓库

[root@docker ~]# docker push 192.168.80.115:5000/centos:test1 

7. 列出私有仓库的所有镜像

[root@docker ~]# curl http://192.168.80.115:5000/v2/_catalog

8. 列出私有仓库的centos镜像有哪些tag

[root@docker ~]# curl http://192.168.80.115:5000/v2/centos/tags/list

9. 先删除原有的centos镜像,再测试私有仓库下载 ’

[root@docker ~]# docker rmi -f 192.168.80.115.5000/centos:test1 centos:7 [root@docker ~]# docker images[root@docker ~]# docker pull 192.168.80.115:5000/centos:test1[root@docker ~]# 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的特性

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

(2)基于镜像的复制策略:镜像可以在多个Harbor实例之间进行复制(同步)。

(3)支持 LDAP/AD:Harbor 可以集成企业内部已有的 AD/LDAP(类似数据库的一张表),用于对已经存在的用户认证和管理。

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

(5)图形化用户界面:用户可以通过浏览器来浏览,搜索镜像仓库以及对项目进行管理。

(6)审计管理:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。

(7)支持 RESTful API:RESTful API 提供给管理员对于 Harbor 更多的操控, 使得与其它管理软件集成变得更容易。

(8)Harbor和docker registry的关系:Harbor实质上是对docker registry做了封装,扩展了自己的业务模板。

3. Harbor的构成

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

Harbor组件说明
ProxyHarbor 的 Registry、UI、Token 服务等组件,都处在 nginx 反向代理后边。该代理将来自浏览器、docker clients 的请求转发到后端不同的服务上。
Registry

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

Core services

Harbor的核心功能,主要提供以下3个服务: 1)UI(harbor-ui): 提供图形化界面,帮助用户管理 Registry 上的镜像(image), 并对用户进行授权。 2)WebHook:为了及时获取Registry 上image 状态变化的情况,在Registry 上配置 Webhook,把状态变化传递给 UI 模块。 3)Token 服务:负责根据用户权限给每个 Docker push/pull 命令签发 Token。Docker 客户端向 Registry 服务发起的请求, 如果不包含 Token,会被重定向到 Token 服务,获得 Token 后再重新向 Registry 进行请求。

Database(harbor-db)为core services提供数据库服务,负责储存用户权限、审计日志、Docker 镜像分组信息等数据。
Job services主要用于镜像复制,本地镜像可以被同步到远程 Harbor 实例上。
Log collector(harbor-log)负责收集其他组件的日志到一个地方。

Harbor 的每个组件都是以 Docker 容器的形式构建的,因此,使用 Docker Compose 来对它进行部署。 总共分为7个容器运行,通过在docker-compose.yml所在目录中执行 docker-compose ps 命令来查看, 名称分别为:nginx、harbor-jobservice、harbor-ui、harbor-db、harbor-adminserver、registry、harbor-log。 其中 harbor-adminserver 主要是作为一个后端的配置数据管理,并没有太多的其他功能。harbor-ui 所要操作的所有数据都通过 harbor-adminserver 这样一个数据配置管理中心来完成。

4. Harbor部署

4.1 服务器设置
服务器IP地址主要软件
Harbor服务器192.168.122.10docker-ce、docker-compose、harbor-offline-v1.2.2
client服务器192.168.122.11docker-ce
4.2 部署Docker-Compose服务

下载或者上传Docker-Compose

[root@docker ~]# 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@docker ~]# chmod +x /usr/local/bin/docker-compose 
[root@docker ~]# docker-compose -v
docker-compose version 1.21.1, build 5a3f1a3

4.3 部署Harbor
4.3.1 下载或上传Harbor安装程序
[root@docker ~]# cd /opt
[root@docker opt]# rz -E
rz waiting to receive.
#传入harbor安装包harbor-offline-installer-v1.2.2.tgz
[root@docker opt]# tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/

4.3.2 修改harbor安装的配置文件  
[root@docker opt]# vim /usr/local/harbor/harbor.cfg #5行,修改,设置为Harbor服务器的IP地址或者域名
hostname = 192.168.80.115
#59行,指定管理员的初始密码,默认的用户名/密码是admin/Harbor12345
harbor_admin_password = Harbor12345
4.4 harbor.cfg配置文件中的两类参数

关于harbor.cfg配置文件中有两类参数:所需参数和可选参数

4.4.1 所需参数

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

● hostname:用于访问用户界面和 register 服务。它应该是目标机器的 IP 地址或完全限定的域名(FQDN),例如 192.168.80.10 或 hub.kgc.cn。不要使用 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 时才应用。

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

4.4.2 可选参数

这些参数对于更新是可选的,即用户可以将其保留为默认值,并在启动 Harbor 后在 Web UI 上进行更新。如果进入 Harbor.cfg,只会在第一次启动 Harbor 时生效,随后对这些参数的更新,Harbor.cfg 将被忽略。

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

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

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

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

4.5 启动harbor
[root@docker opt]# cd /usr/local/harbor/
[root@docker harbor]# ./install.sh
[root@docker harbor]# docker images
[root@docker harbor]# docker ps -a

注:启动harbor前需删除registry镜像/容器,否则无法生成新的registry镜像。 

4.6 查看harbor启动镜像
[root@docker harbor]# docker-compose ps
4.7 创建一个新项目

(1)浏览器访问:http://192.168.80.115/登录harbor web ui界面,默认的管理员用户名和密码是admin/Harbor12345

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

(3)填写项目名称为“test_project”,点击“确定”按钮,创建新项目

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

4.7.1 登录Harbor
[root@docker harbor]# docker login -u admin -p Harbor12345 http://127.0.0.1
4.7.2 下载镜像进行测试 
[root@docker harbor]# docker pull nginx
[root@docker harbor]# docker images
4.7.3 将镜像打标签
[root@docker harbor]# docker tag nginx:latest 127.0.0.1/test_project/nginx:v1
[root@docker harbor]# docker images
4.7.4 上传镜像到Harbor 
[root@docker harbor]# docker push 127.0.0.1/test_project/nginx:v1
4.7.5 web查看project状态 

4.8 在其他客户端上传镜像

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

4.8.1 在Docker客户端配置操作

解决办法是在Docker server启动的时候,增加启动参数,默认使用HTTP访问。 方法一:修改/usr/lib/systemd/system/docker.service

[root@localhost ~]# vim /usr/lib/systemd/system/docker.service#13行修改
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.80.115 --containerd=/run/containerd/containerd.sock
#或修改为ExecStart=/usr/bin/dockerd --insecure-registry 192.168.80.115

 

方法二:修改/etc/docker/daemon.json

[root@localhost ~]# vim /etc/docker/daemon.json{"registry-mirrors": ["https://3c7tpzyf.mirror.aliyuncs.com"],"insecure-registries": ["192.168.80.115"]
}
4.8.2 重启Docker,再次登录
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
4.8.3 再次登录Harbor
[root@localhost ~]# docker login -u admin -p Harbor12345 http://192.168.80.115
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
#将自动保存凭据到/root/.docker/config.json,下次登录时可直接使用凭据登录 Harbor
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded
4.8.4 下载镜像进行测试 
[root@localhost ~]# docker pull 192.168.80.115/test_project/nginx:v1[root@localhost ~]# docker images

 

4.8.5 上传镜像进行测试 
[root@localhost ~]# docker pull cirros
docker tag cirros:latest 192.168.80.115/test_project/cirros:v1
[root@localhost ~]# docker tag cirros:latest 192.168.80.115/test_project/cirros:v1
[root@localhost ~]# docker images
[root@localhost ~]# docker push 192.168.80.115/test_project/cirros:v1 

5. 维护管理Harbor

5.1 通过Harbor Web创建项目

在 Harbor 仓库中,任何镜像在被 push 到 regsitry 之前都必须有一个自己所属的项目。 单击“+项目”,填写项目名称,项目级别若设置为"私有",则不勾选。如果设置为公共仓库,则所有人对此项目下的镜像拥有读权限,命令行中不需要执行"Docker login"即可下载镜像,镜像操作与 Docker Hub 一致。

5.2 创建 Harbor 用户
5.2.1 创建用户并分配权限

在 Web 管理界面中单击系统管理 -> 用户管理 -> +用户, 填写用户名为“test”,邮箱为“123@test.com”,全名为“test”,密码为“Test12345”(需大小写英文,数字以及至少8位字符),注释为“test”(可省略)。 附:用户创建成功后,单击左侧“...”按钮可将上述创建的用户设置为管理员角色或进行删除操作,本例不作任何设置。

5.2.2 添加项目成员

单击项目 -> test_project -> 成员 -> + 成员,填写上述创建的用户 test 并分配角色为“开发人员”。

附:此时单击左侧“...”按钮仍然可对成员角色进行变更或者删除操作

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

删除全部本地镜像

[root@localhost ~]# docker rmi -f $(docker images -q)
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

退出当前用户,然后使用上述创建的账户test登录 

[root@localhost ~]# docker logout 192.168.80.115
Removing login credentials for 192.168.80.115
[root@localhost ~]# docker login -u test -p Test12345 http://192.168.122.10
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
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/#credentials-storeLogin Succeeded

下载harbor仓库镜像 

[root@localhost ~]# docker pull 192.168.80.115/test_project/cirros:v1
[root@localhost ~]# docker images
REPOSITORY                           TAG       IMAGE ID       CREATED        SIZE
192.168.122.10/test_project/cirros   v1        f9cae1daf5f6   7 months ago   12.6MB

上传镜像至harbor仓库 

[root@localhost ~]# docker tag 192.168.80.115/test_project/cirros:v1 [root@localhost ~]# docker images[root@localhost ~]# docker push 192.168.80.115/test_project/cirros:v2

 5.3 修改harbor.cfg配置文件、

要更改 Harbour的配置文件中的可选参数时,需先停止现有的 Harbour实例并更新 Harbor.cfg;然后运行 prepare 脚本来填充配置;最后重新创建并启动 Harbour 的实例。 使用 docker-compose 管理 Harbor 时,必须在与 docker-compose.yml 相同的目录中运行。

[root@docker ~]# cd /usr/local/harbor
[root@docker harbor]# docker-compose down -v[root@docker harbor]# vim harbor.cfg  #只能修改可选参数
[root@docker harbor]# ./prepare [root@docker harbor]# docker-compose up -d

如果有以下报错,需要开启防火墙 firewalld 服务解决 

Creating network "harbor_harbor" with the default driver
ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule:  (iptables failed: iptables --wait -t nat -I DOCKER -i br-b53c314f45e8 -j RETURN: iptables: No chain/target/match by that name.(exit status 1))systemctl restart firewalld.service
docker-compose up -d
5.4 移除Harbor服务容器同时保留镜像数据/数据库,并进行迁移

在Harbor服务器上操作

(1)移除Harbor服务容器

[root@docker harbor]# cd /usr/local/harbor
[root@docker harbor]# docker-compose down -v

(2)把项目中的镜像数据进行打包 持久数据,如镜像,数据库等在宿主机的/data/目录下,日志在宿主机的/var/log/Harbor/目录下

[root@docker harbor]# ls /data/registry/docker/registry/v2/repositories/test_project
cirros  nginx
[root@docker harbor]# cd /data/registry/docker/registry/v2/repositories/test_project
[root@docker test_project]# tar zcvf test-registry.tar.gz ./*

5.5 如需重新部署,需要移除Harbor服务器全部数据 
[root@docker harbor]# cd /usr/local/harbor
[root@docker harbor]# docker-compose down -v
Stopping nginx              ... done
Stopping harbor-jobservice  ... done
Stopping harbor-ui          ... done
Stopping registry           ... done
Stopping harbor-db          ... done
Stopping harbor-adminserver ... done
Stopping harbor-log         ... done
Removing nginx              ... done
Removing harbor-jobservice  ... done
Removing harbor-ui          ... done
Removing registry           ... done
Removing harbor-db          ... done
Removing harbor-adminserver ... done
Removing harbor-log         ... done
Removing network harbor_harbor
[root@docker harbor]# rm -rf /data/database
[root@docker harbor]# rm -rf /data/registry

 

 

 

 

 

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

相关文章

近50亿元国资助阵,全球最大量子独角兽登场!

4月30日,澳大利亚与PsiQuantum公司宣布签订一项近10亿澳元(约6.2亿美元、47.24亿人民币)的协议,旨在建造世界上第一台商业上“有用”的量子计算机。 仅在一天前,澳大利亚还投资了1840万澳元,在悉尼大学成立…

基于springboot+vue+Mysql的点餐平台网站

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

攻防世界-xff-referer

题目信息 分析过程 显示ip必须为123.123.123.123,则进行伪造 解题过程 打开repeator 提示必须来自https://www.google.com,则再次构造Referer 相关知识 x-forwarded-for 和 referer的区别: x-forwarded-for 用来证明ip的像是“127.0.0.1”这种&a…

嵌入式系统应用-拓展-FLASH之操作 SFUD (Serial Flash Universal Driver)之KEIL应用

这里已经假设SFUD代码已经移植到工程下面成功了,如果读者对SFUD移植还不了解。可以参考笔者这篇文章:SFUD (Serial Flash Universal Driver)之KEIL移植 这里主要介绍测试和应用 1 硬件设计 这里采用windbond 的W25Q32这款芯片用于SFUD测试。 W25Q32是…

【notes2】并发,IO,内存

文章目录 1.线程/协程/异步:并发对应硬件资源是cpu,线程是操作系统如何利用cpu资源的一种抽象2.并发:cpu,线程2.1 可见性:volatile2.2 原子性(读写原子):AtomicInteger/synchronized…

ubuntu20.04搭建Fabric教程

本章节环境配置 ubuntu: 20.04 go:1.16.3 docker: 20.10.6 docker-compose: 1.27.2 fabric:2.2.0 fabric-ca: 1.4.9 一 搭建通道 新建工作目录 mkdir fabric && cd fabric配置go代理 go env -w GO111MODULEon ​ #更新下载包的镜像 go env …

一个简单的仓库出入库管理软件的流程是什么样的?有哪些功能?

身为仓库文员,我深知仓库管理对于公司运营的重要性。仓库是公司物资的中转站,其管理的好坏直接关系到公司的运营效率和成本控制。然而,传统的仓库管理方式往往存在着效率低下、易出错等问题,为了解决这些问题,我们需要…

视频剪辑:视频文件元数据修改工具,批量操作提升效率和准确性

在视频剪辑和后期处理的过程中,除了对视频本身的编辑和修改,元数据的管理和修改同样重要。元数据,如标题、艺术家、专辑封面等,不仅提供了视频文件的基本信息,还有助于更好地组织、搜索和共享视频内容。而针对视频文件…

SpringMVC简介和体验

一、SpringMVC简介和体验 1.1 介绍 Spring Web MVC :: Spring Framework Spring Web MVC是基于Servlet API构建的原始Web框架,从一开始就包含在Spring Framework中。正式名称“Spring Web MVC”来自其源模块的名称( spring-webmvc )&#…

分享几个副业,一天搞100~200不成问题,一不小心收益比你主业还多

每次家庭聚会,总是那些老掉牙的话题在耳边萦绕:“孩子,你工资多少啊?买车买房了吗?”仿佛只有按部就班地上班、结婚生子,才是人生的唯一出路。 然而,在这个充满机遇的时代,谁说“不上…

2.5W字 一文读懂汽车智能座舱的FLASH 存储市场、技术

吃瓜群众:机哥,存储是什么玩意,我买手机、电脑的时候导购员都说买内存大的,三星的好,品牌大,问题少,我也只有看哪个内存大就买那个。 机哥:额,这个嘛,说来话长…

微信一键登录怎么做的?流程是什么?

实现方法:三种方法 点击【登录】按钮 》(系统框)绑定手机号》如果绑定:登录成功点击【登录】按钮》直接登录成功了 >后续可以在设置中【绑定手机号】点击【登录】按钮 -》 打开一个新的页面(绑定手机号):自己的表单 -》进行手机号绑定的验证 方式一:业务流程)用…

数据库大作业——基于qt开发的图书管理系统(二) 相关表结构的设计

前言 在上一篇文章中。我们完成了Qt环境的安装,同时完成了有关项目需求的分析并绘制了整体的项目架构图,而在图书管理系统中,其实我们主要完成的就是对数据的增删改查,并将这些功能通过信号与槽机制和可视化界面绑定在一起&#…

VmWare 虚拟机没有网络解决办法

由于最近需要,装了个VM虚拟机,但是突然发现本机有网络,虚拟机却没有网络,更换了虚拟机的网络设置,都尝试过了 都不管用, 最后尝试了这种方法完美解决 还原网络默认设置 首先还原虚拟网络编辑器设置 启动V…

ASP.NET网上图书订阅系统的设计

摘 要 网上图书订阅系统基于 Microsoft SQL Server 2000和ASP.NET平台,以C#为编程语言开发,实现了网上图书预订和借阅,订阅信息查询,图书和用户信息的修改,借阅排行和新到图书的查询等功能,这样不但可将管理员从繁重…

【Elasticsearch<四>✈️✈️】SpringBoot 项目整合 Elasticsearch

目录 🍸前言 🍻一、Elasticsearch 本地环境启动 🍺二、SpringBoot 项目整合 Elasticsearch 2.1 引入 ES 依赖 2.2 配置 ES 属性 2.3 创建实体类 2.4 操作 ES 的工具类 2.5 操作 ES 的业务层 🍹三、接口测试 3.1 编写测试类 3…

外贸企业邮箱是什么?做外贸企业邮箱哪个好?

外贸企业邮箱是什么?外贸企业在进行跨国沟通时必不可少的工具就是外贸企业邮箱,外贸企业邮箱需要具备的条件就是海外邮件抵达率高、安全稳定、多语言沟通。而我们又怎么选择一个适合的外贸企业邮箱呢?小编今天带您一起了解。 一、外贸企业邮…

【MicroPython ESP32】ssd1306驱动0.96“I2C屏幕汉字显示示例

所需模块micropython-ssd1306模块 中文下载站:https://www.cnpython.com/pypi/micropython-ssd1306/download 官方下载站:https://pypi.org/project/micropython-ssd1306/ 汉字取模说明 取模工具:pctolcd2002取模方式: UTF-8字…

华为 二层交换机与防火墙连通上网实验

防火墙是一种网络安全设备,用于监控和控制网络流量。它可以帮助防止未经授权的访问,保护网络免受攻击和恶意软件感染。防火墙可以根据预定义的规则过滤流量,例如允许或阻止特定IP地址或端口的流量。它也可以检测和阻止恶意软件、病毒和其他威…

嵌入式系统应用-拓展-FLASH之操作 SFUD (Serial Flash Universal Driver)之KEIL移植

1 SFUD介绍 1.1 初步介绍 SFUD 是一个开源的串行 SPI 闪存通用驱动库。由于市面上有各种类型的串行闪存设备,每种设备都具有不同的规格和指令,因此 SFUD 的设计目的是解决这些差异。这使得我们的产品可以支持不同品牌和规格的闪存,增强了软…