Harbor系列之3:使用docker环境安装Harbor仓库-https部署

搭建镜像仓库harbor-安装及使用教程 架构组件图如上图所描述,Harbor由6个大的模块所组成:1、Proxy: Harbor的registry、UI、token services等组件,都处在一个反向代理后边。该代理将来自浏览器、docker clients的请求转发到后端服务上。2、Registry: 负责存储Docker镜像,以及处理Docker push/pull请求。 阅读详情
AI摘要

本文详细介绍如何在Docker环境下部署Harbor企业级容器镜像仓库,使用HTTPS协议及自签名证书,涵盖证书生成、配置文件调整、服务启动及镜像推送测试全过程。

使用docker环境安装Harbor仓库-https部署

Harbor 是一个开源的云原生镜像仓库,用于存储和分发容器镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源 Docker Distribution。作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。

本文记录使用docker环境安装部署Harbor仓库,使用https协议,采用自签名证书。

本文时间部署Harbor v2.11.0版本,采用离线部署安装包。最新的官方安装步骤参考:https://goharbor.io/docs/latest/install-config/

1. 准备工作

  1. 下载 Harbor 离线安装包

从 Harbor GitHub releases 页面下载离线安装包,例如 harbor-offline-installer-v2.11.0.tgz。

  1. 安装 Docker 和 Docker Compose

确保目标机器上已经安装了 Docker 和 Docker Compose。

在 Linux 主机上:需要 Docker 20.10.10-ce 及以上版本和 Docker Compose 1.18.0 及以上版本。

  1. 证书相关

生成证书颁发机构证书及私钥:

# 修改主机名
root@ubuntu-svr:~# hostnamectl set-hostname harbor

root@harbor:~# mkdir -p /data/harbor/certs
root@harbor:~# cd /data/harbor/certs/
root@harbor:/data/harbor/certs# openssl genrsa -out ca.key 4096

root@harbor:/data/harbor/certs# openssl req -x509 -new -nodes -sha512 -days 3650  -subj "/C=CN/ST=Beijing/L=Beijing/O=matrix/OU=test/CN=harbor.test.com"  -key ca.key  -out ca.crt
root@harbor:/data/harbor/certs# ls
ca.crt  ca.key

生成服务器私钥及证书签名请求(CSR):

root@harbor:/data/harbor/certs# openssl genrsa -out harbor.test.com.key 4096
# 生成证书签名请求
root@harbor:/data/harbor/certs# openssl req -sha512 -new -subj "/C=CN/ST=Beijing/L=Beijing/O=matrix/OU=test/CN=harbor.test.com" -key harbor.test.com.key  -out harbor.test.com.csr
root@harbor:/data/harbor/certs# ls
ca.crt  ca.key  harbor.test.com.csr  harbor.test.com.key

生成 x509 v3 扩展文件:

root@harbor:/data/harbor/certs# cat v3.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=harbor.test.com
DNS.2=test.com
DNS.3=harbor

使用该v3.ext文件为 Harbor 服务器生成证书:

root@harbor:/data/harbor/certs# openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in harbor.test.com.csr -out harbor.test.com.crt
Certificate request self-signature ok
subject=C = CN, ST = Beijing, L = Beijing, O = matrix, OU = test, CN = harbor.test.com

将 harbor.test.com.crt 转换为 harbor.test.com.cert , 供 Docker 使用。Docker 守护进程将.crt文件解释为 CA 证书,将.cert文件解释为客户端证书:

root@harbor:/data/harbor/certs# openssl x509 -inform PEM -in harbor.test.com.crt -out harbor.test.com.cert

2. 安装部署

将 harbor-offline-installer-v2.11.0.tgz 上传到待部署机器并解压:

root@harbor:~# tar xf harbor-offline-installer-v2.11.0.tgz
root@harbor:~# cd harbor/
root@harbor:~/harbor# ls
common.sh  harbor.v2.11.0.tar.gz  harbor.yml.tmpl  install.sh  LICENSE  prepare

配置 Harbor:

root@harbor:~/harbor# cp harbor.yml.tmpl harbor.yml
root@harbor:~/harbor# vi harbor.yml

编辑 harbor.yml 文件,根据实际需求进行配置:

hostname: harbor.test.com   # 使用域名
...
http:
  port: 80  # http端口
...
harbor_admin_password: Harbor12345  # web界面admin密码
...
database:
  password: root123 # 后端数据库root密码
...
data_volume: /data/harbor  # 数据存放路径

...
https:
  # https port for harbor, default is 443
  port: 443     # https端口
  # The path of cert and key files for nginx
  certificate: /data/harbor/certs/harbor.test.com.cert
  private_key: /data/harbor/certs/harbor.test.com.key
  # enable strong ssl ciphers (default: false)
  # strong_ssl_ciphers: false

...

加载镜像和启动 Harbor:

# 执行安装
root@harbor:~/harbor# bash install.sh

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

Note: docker version: 26.1.3

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

Note: Docker Compose version v2.27.0

[Step 2]: loading Harbor images ...
Loaded image: goharbor/harbor-core:v2.11.0
Loaded image: goharbor/harbor-db:v2.11.0
Loaded image: goharbor/nginx-photon:v2.11.0
Loaded image: goharbor/trivy-adapter-photon:v2.11.0
Loaded image: goharbor/redis-photon:v2.11.0
Loaded image: goharbor/registry-photon:v2.11.0
Loaded image: goharbor/prepare:v2.11.0
Loaded image: goharbor/harbor-portal:v2.11.0
Loaded image: goharbor/harbor-log:v2.11.0
Loaded image: goharbor/harbor-jobservice:v2.11.0
Loaded image: goharbor/harbor-registryctl:v2.11.0
Loaded image: goharbor/harbor-exporter:v2.11.0


[Step 3]: preparing environment ...

[Step 4]: preparing harbor configs ...
prepare base dir is set to /root/harbor
Clearing the configuration file: /config/log/rsyslog_docker.conf
Clearing the configuration file: /config/log/logrotate.conf
Clearing the configuration file: /config/db/env
Clearing the configuration file: /config/registry/config.yml
Clearing the configuration file: /config/registry/root.crt
Clearing the configuration file: /config/registry/passwd
Clearing the configuration file: /config/core/env
Clearing the configuration file: /config/core/app.conf
Clearing the configuration file: /config/jobservice/config.yml
Clearing the configuration file: /config/jobservice/env
Clearing the configuration file: /config/portal/nginx.conf
Clearing the configuration file: /config/registryctl/config.yml
Clearing the configuration file: /config/registryctl/env
Clearing the configuration file: /config/nginx/nginx.conf
Generated configuration file: /config/portal/nginx.conf
Generated configuration file: /config/log/logrotate.conf
Generated configuration file: /config/log/rsyslog_docker.conf
Generated configuration file: /config/nginx/nginx.conf
Generated configuration file: /config/core/env
Generated configuration file: /config/core/app.conf
Generated configuration file: /config/registry/config.yml
Generated configuration file: /config/registryctl/env
Generated configuration file: /config/registryctl/config.yml
Generated configuration file: /config/db/env
Generated configuration file: /config/jobservice/env
Generated configuration file: /config/jobservice/config.yml
loaded secret from file: /data/secret/keys/secretkey
Generated configuration file: /compose_location/docker-compose.yml
Clean up the input dir


Note: stopping existing Harbor instance ...
WARN[0000] /root/harbor/docker-compose.yml: `version` is obsolete
[+] Running 10/10
 ✔ Container registryctl        Removed                                                                                                                                                                                                                      0.3s
 ✔ Container harbor-jobservice  Removed                                                                                                                                                                                                                      0.4s
 ✔ Container nginx              Removed                                                                                                                                                                                                                      0.0s
 ✔ Container harbor-portal      Removed                                                                                                                                                                                                                      0.3s
 ✔ Container harbor-core        Removed                                                                                                                                                                                                                      3.1s
 ✔ Container registry           Removed                                                                                                                                                                                                                      0.2s
 ✔ Container redis              Removed                                                                                                                                                                                                                      0.3s
 ✔ Container harbor-db          Removed                                                                                                                                                                                                                      0.2s
 ✔ Container harbor-log         Removed                                                                                                                                                                                                                     10.2s
 ✔ Network harbor_harbor        Removed                                                                                                                                                                                                                      0.2s


[Step 5]: starting Harbor ...
WARN[0000] /root/harbor/docker-compose.yml: `version` is obsolete
[+] Running 10/10
 ✔ Network harbor_harbor        Created                                                                                                                                                                                                                      0.1s
 ✔ Container harbor-log         Started                                                                                                                                                                                                                      0.3s
 ✔ Container harbor-db          Started                                                                                                                                                                                                                      1.0s
 ✔ Container redis              Started                                                                                                                                                                                                                      0.9s
 ✔ Container harbor-portal      Started                                                                                                                                                                                                                      0.9s
 ✔ Container registry           Started                                                                                                                                                                                                                      1.0s
 ✔ Container registryctl        Started                                                                                                                                                                                                                      1.3s
 ✔ Container harbor-core        Started                                                                                                                                                                                                                      1.4s
 ✔ Container nginx              Started                                                                                                                                                                                                                      2.0s
 ✔ Container harbor-jobservice  Started                                                                                                                                                                                                                      1.9s
✔ ----Harbor has been installed and started successfully.----

说明:

  1. 当前机器如果存在同名的容器,也会导致harbor部署失败,例如redis,nginx等,部署之前停止可能冲突的容器。
  2. 注意端口冲突,如果本地已经部署nginx或者httpd等web服务器,注意修改端口。
  3. 安装trivy扫描工具: ./install.sh --with-trivy

3. 检查部署情况

  1. 查看 Harbor 服务状态
[root@harbor harbor]# docker ps
CONTAINER ID   IMAGE                                               COMMAND                  CREATED          STATUS                   PORTS                                   NAMES
cb5c79df4e4c   goharbor/harbor-jobservice:v2.11.0                  "/harbor/entrypoint.…"   3 minutes ago    Up 3 minutes (healthy)                                           harbor-jobservice
39486ae87f17   goharbor/nginx-photon:v2.11.0                       "nginx -g 'daemon of…"   3 minutes ago    Up 3 minutes (healthy)   0.0.0.0:80->8080/tcp, :::80->8080/tcp   nginx
09098205ec51   goharbor/harbor-core:v2.11.0                        "/harbor/entrypoint.…"   3 minutes ago    Up 3 minutes (healthy)                                           harbor-core
0e968a41d58c   goharbor/redis-photon:v2.11.0                       "redis-server /etc/r…"   3 minutes ago    Up 3 minutes (healthy)                                           redis
8552f9919837   goharbor/harbor-db:v2.11.0                          "/docker-entrypoint.…"   3 minutes ago    Up 3 minutes (healthy)                                           harbor-db
4985901e00f5   goharbor/harbor-portal:v2.11.0                      "nginx -g 'daemon of…"   3 minutes ago    Up 3 minutes (healthy)                                           harbor-portal
9c297f67dd64   goharbor/harbor-registryctl:v2.11.0                 "/home/harbor/start.…"   3 minutes ago    Up 3 minutes (healthy)                                           registryctl
e0d91f7bfd29   goharbor/registry-photon:v2.11.0                    "/home/harbor/entryp…"   3 minutes ago    Up 3 minutes (healthy)                                           registry
3c06f80eb9f0   goharbor/harbor-log:v2.11.0                         "/bin/sh -c /usr/loc…"   3 minutes ago    Up 3 minutes (healthy)   127.0.0.1:1514->10514/tcp               harbor-log
  1. 访问 Harbor Web 界面

打开浏览器,访问 https://harbor.test.com,或https://ip,使用配置文件中设置的管理员用户名(默认是 admin)和密码登录。

  1. 推送镜像测试

配置docker客户端:

root@harbor:~# mkdir -p /etc/docker/certs.d/harbor.test.com
root@harbor:~# cp /data/harbor/certs/harbor.test.com.cert /etc/docker/certs.d/harbor.test.com/

修改docker的daemon.json文件,使其信任harbor.test.com仓库:

[root@k8s ~]# cat /etc/docker/daemon.json
{

  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": [
        "https://registry.docker-cn.com",
        "https://registry-1.docker.io",
        "https://registry.hub.docker.com",
        "https://mirror.baidubce.com",
        "https://ccr.ccs.tencentyun.com",
        "https://wnsrsn9i.mirror.aliyuncs.com"
    ],
   "insecure-registries": ["192.168.0.159", "harbor.test.com"]

修改完成后重启docker服务生效。

测试登录:

[root@k8s ~]# docker login -u admin -p Harbor12345 harbor.test.com
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-store

Login Succeeded

推送镜像测试:

[root@k8s ~]# docker tag 192.168.0.159/library/nginx:1.27.0 harbor.test.com/library/nginx:1.27.0
[root@k8s ~]# docker push harbor.test.com/library/nginx:1.27.0
The push refers to repository [harbor.test.com/library/nginx]
3cf30c944fca: Pushed
16d40ad06803: Pushed
cf1614267117: Pushed
e5ec4dd3995c: Pushed
e8186e892c11: Pushed
a9a1ca1cae25: Pushed
1387079e86ad: Pushed
1.27.0: digest: sha256:9d1cac272a1ff8c4f4d6607940f179c9716b28c956231e61ae40a63990400c15 size: 1778

说明:

library为harbor默认自带的项目,根据自己使用需求创建自定义的项目存放容器镜像。

4. 常见问题排查

  1. 确保防火墙允许 Harbor 端口
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
  1. 检查 Docker 和 Docker Compose 版本

确保安装的 Docker 和 Docker Compose 版本满足 Harbor 的最低要求。

  1. x509: cannot validate certificate
[root@k8s ~]# docker login -u admin -p Harbor12345 192.168.0.157
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://192.168.0.157/v2/: x509: cannot validate certificate for 192.168.0.157 because it doesn't contain any IP SANs

解决:改用域名登录。

  1. 502 Bad Gateway
[root@k8s ~]# docker login -u admin -p Harbor12345 harbor.test.com
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: login attempt to https://harbor.test.com/v2/ failed with status: 502 Bad Gateway

解决:

重启下部署harbor机器的docker服务,然后重新登录:

[root@k8s ~]# docker login -u admin -p Harbor12345 harbor.test.com
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-store
  1. 在harbor本地机器使用docker测试登录,报错如下:
root@harbor:~# docker login -u admin -p Harbor12345 harbor.test.com
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get "http://harbor.test.com/v2/": EOF

这个错误通常是由于 Docker 无法连接到指定的 Harbor 导致,由于是本地连接测试,不存在网络连接问题,进一步排查为docker配置了代理导致,取消代理后测试正常。

  1. k8s部署pod从harbor拉取镜像提示“ x509: certificate signed by unknown authority”

本地部署的harbor使用的是https,证书是自签名的,不受信任。需要配置docker、containerd、CRI-O(取决于k8s使用的容器运行时)信任harbor仓库。

Harbor私有仓库部署与配置-https Harbor 是一个开源的云原生镜像仓库,用于存储和分发容器镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源 Docker Distribution。作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。本文用https+自签名证书部署。 阅读详情

相关推荐

Harbor安装教程-完全根据官方文档2.6.0版本

Harbor安装2.6.0版本

w874307446的博客 6310

Docker安装Harbor

Docker安装Harbor

weixin_43458965的博客 1680

Harbor仓库的使用、Docker-compose的编排、YAML文件

Harbor仓库的使用;Docker-compose的编排;YAML文件格式及语法;YAML⽂件内常⽤指令字段;

m0_73907608的博客 2182

Docker Harbor安装、使用

harbor是VMware公司开源的企业级docker registry项目。主要是实现为用户去迅速搭建一个docker registry服务。提供了可视化UI界面,提供了多个项目的镜像权限管理及控制功能。安装后可以体验下。Harbor的每个组件都是以Docker 容器的形式构建的,使用docker - compose来对它进行部署。用于部署Harbor 的docker- compose模板位于 harbor/ docker-compose.yml。

m0_37908257的博客 5155

搭建部署企业级Harbor镜像仓库

镜像浏览与搜索:用户可以在Web界面中查看已创建的镜像仓库列表,通过点击任何一个仓库进入其详细信息页面,包括镜像列表、标签和访问权限等。同时,支持通过关键字搜索仓库中的镜像,以便快速找到所需的镜像。镜像删除与上传:对于不再需要的镜像,可以选择删除操作,但需确保了解删除的后果。Harbor还提供了更高级的安全特性,如用户管理、访问控制和活动审计,目前大多数企业都在使用Harbor进行镜像管理。访问权限控制:除了用户管理外,还可以通过界面为用户和项目分配不同的权限,包括镜像的读取、写入和删除等操作。

weixin_43748495的博客 2082

k8s集群部署harbor镜像仓库

【代码】k8s集群部署harbor镜像仓库。

qq_15290209的博客 5243

Harbor镜像仓库安装配置及使用

是一个开源的企业级Docker 镜像仓库,提供了许多功能,包括用户管理、访问控制、镜像复制和安全扫描。

zxz547388910的博客 4850

Docker镜像仓库Harbor

Harbor是由VMWare公司开源的容器镜像仓库。事实上,Harbor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制 ,AD/LDAP集成以及审计日志等,足以满足基本企业需求。GitHub项目地址:https://github.com/goharbor/harbor。

asdmjy123的博客 1141

harbor(docker仓库)仓库部署

harbor

u010230019的博客 8353

harbor仓库下载及部署

harbor可用于k8s的企业级私有容器仓库,本篇主要介绍如何本地部署harbor仓库及docker使用harbor仓库

m0_74744227的博客 1066

Docker harbor的安装部署

集群要求说明:在安装 Harbor 私有镜像仓库之前,需要先有一个K8S集群,本文中使用的集群的搭建过程请见 基于CentOS 7.8安装Kubernetes 1.25.5单Master节点集群 这篇博文。 硬件要求说明:安装 Harbor 私有镜像仓库的主机或虚拟机要求至少2核4G且内存硬盘不低于40GB,本文中使用的是 CentOS7.8 虚拟机来安装Harbor私有镜像仓库。 软件要求说明:安装 Harbor 私有镜像仓库之前需要先安装 docker 和 docker-compose。 特别说明:本文

一片冰心 1654

harbor安装并配置https

Harbor 是一个VMware公司开源的镜像仓库,它使用策略和基于角色的访问控制来保护工件,确保镜像被扫描并且没有漏洞,并将镜像标记为可信。Harbor 是一个 CNCF 毕业项目,它提供合规性、性能和互操作性,以帮助您跨云原生计算平台(如 Kubernetes 和 Docker)一致且安全地管理工件。Habor在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制 ,AD/LDAP集成以及审计日志等。

IT 1万+

Kubernetes使用Harbor私有镜像仓库

Kubernetes使用Harbor私有镜像仓库1 安装说明1.1 安装要求说明1.2 安装版本说明1.3 集群效果说明2 安装步骤2.1 安装Docker2.2 安装Docker-Compose2.3 安装Harbor2.4 配置Docker客户端3 测试3.1 创建Harbor项目3.2 推送Docker镜像3.3 拉取Docker镜像 1 安装说明 1.1 安装要求说明 集群要求说明:在安装 Harbor 私有镜像仓库之前,需要先有一个K8S集群,本文中使用的集群的搭建过程请见 基于CentOS 7

Java大数据联盟 3657

Docker搭建Harbor私有仓库

转载:https://blog.youkuaiyun.com/aixiaoyang168/article/details/73549898 1、Harbor 介绍 Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docke...

灬勿忘丶心安 2万+

Docker(十六):使用Docker部署Harbor私有镜像仓库

🟢 Docker(十六):使用Docker部署Harbor私有镜像仓库

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 4万+

K8S部署Harbor镜像仓库(含离线安装包harbor-offline-installer国内下载链接)

每个人都有惰性,但不断学习是好好生活的根本,共勉!

感谢阅读 6101

docker harbor 镜像仓库部署笔记

检查旧版本,有就卸载,没有就继续# 设置阿里云镜像仓库​# 查看仓库中的docker版本​​# 安装docker 或指定版本,报网络问题就多试几次(某个包装不上,单独下载下来rpm安装后再重试)#设置启动和开机启动#查看docker状态],EOF​​。

都是曾经而已 1265

别再对着数据手册画图了!用HFSS 2023 R2快速复现ESP-01的PCB天线(附模型文件)

本文详细介绍了使用HFSS 2023 R2逆向复现ESP-01 PCB天线的五个关键步骤,包括逆向工程准备、高效建模技巧、材料与边界设置、激励与求解配置以及结果分析与设计验证。通过参数化建模和智能边界检测,大幅提升仿真效率,适用于WIFI和蓝牙设备的射频设计优化。

weixin_30832143的博客 76

Harbor 仓库安装 - 基认证的容器镜像仓库

本文档详细介绍了基于 HTTPS 证书认证的 Harbor 私有镜像仓库搭建流程。首先阐述了 Harbor 作为企业级容器镜像管理平台的核心功能,包括多租户隔离、RBAC 权限控制、镜像扫描与签名、高可用架构等。

a_2373179473的博客 1342

电子结构设计(EMD)十年知识总结

客官,你的面相是做结构设计的奇才~1. 材料选择【一出手的0.1s就败了】2. 钣金件设计【折来折去有啥难】3. 塑胶件设计【看着好复杂】4. 型材件设计【凭啥不让我设计】5. 电子结构(PCBA)设计【静电肿么要我背锅】6. 包装设计【要的就是金玉其外,败絮其中】7. 外观(工业)设计【好不好看,谁说了算】8. 标签设计【】9. 标准件选择【一个螺丝难倒英雄汉/提起螺丝,英雄气短】10. 计算仿...

wfeng86的博客 1569

深度学习分类任务中,正负样本比例失衡的5种实战解决方案(附代码)

本文深入探讨了深度学习分类任务中正负样本比例失衡的5种实战解决方案,包括智能采样技术、动态数据增强、损失函数工程、模型架构创新和训练策略优化。针对信用卡欺诈检测、医疗诊断等场景,提供了详细的代码实现和评估方法,帮助开发者有效解决样本不平衡问题,提升模型在真实场景中的表现。

h9j8k7l6m5n的博客 425
上一篇: Harbor系列之2:使用docker环境安装Harbor仓库-http部署
下一篇: Harbor系列之4:使用Harbor chart部署到Kubernetes环境
KongTY312
博客等级 码龄12年 2143粉丝 189原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KongTY312

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值