网站首页 > 博客文章 正文
上一篇文章我们使用了 registry 镜像来搭建Docker私有镜像仓库,但是使用体验不是很好,没有一个可管理的UI界面,管理很麻烦。
本篇文章将介绍一个新的搭建Docker镜像仓库的工具叫做 Harbor。Harbor 拥有一个易于管理的UI,提供多语言的切换,支持项目管理、日志记录、用户管理、仓库管理等等,是大多数人选择自建Docker镜像仓库的重要选择之一。
Harbor介绍
官网:https://goharbor.io/
GitHub地址:
https://github.com/goharbor/harbor
官方安装文档:
https://goharbor.io/docs/2.4.0/install-config/
安装要求
安装Harbor会部署多个Docker容器,因此在部署前需要确定你得Linux主机是否安装Docker和Docker Compose.
硬件需求
Resource | Minimum | Recommended |
CPU | 2 CPU | 4 CPU |
Mem | 4 GB | 8 GB |
Disk | 40 GB | 160 GB |
软件需求
Software | Version | Description |
Docker engine | Version 17.06.0-ce+ or higher | |
Docker Compose | Version 1.18.0 or higher | 安装文档参考:docker-compose容器编排 |
Openssl | Latest is preferred | Used to generate certificate and keys for Harbor |
开放端口
需要开放以下端口:
Port | Protocol | Description |
443 | HTTPS | Harbor portal and core API accept HTTPS requests on this port. You can change this port in the configuration file. |
4443 | HTTPS | Connections to the Docker Content Trust service for Harbor. Only required if Notary is enabled. You can change this port in the configuration file. |
80 | HTTP | Harbor portal and core API accept HTTP requests on this port. You can change this port in the configuration file. |
下载 Harbor 并解压
在Harbor的github发布页面下载Harbor在线安装包或离线安装包。
wget https://github.com/goharbor/harbor/releases/download/v2.4.1/harbor-online-installer-v2.4.1.tgz
tar zxvf harbor-online-installer-v2.4.1.tgz
配置对 Harbor 的 Https 访问
默认情况下,Harbor不附带证书,也可以部署,但是是通过http访问,未进行加密,所以需要配置为使用https来访问,保证访问的安全性。
要配置https,就必须创建SSL证书,可以使用受信任的第三方CA签发的证书,比如 Let's Encrypt,也可以使用自签名的证书。
下面介绍如果使用自签名证书,这里假设我访问 Harbor 的域名是 harbor.chenxie.net ,并且已经配置好了DNS解析,域名已经指向我的这台机器。(直接添加 192.168.92.147 harbor.chenxie.net 到 /etc/hosts)
生成证书颁发机构证书
1. 生成 CA 证书私钥
openssl genrsa -out ca.key 4096
2. 生成 CA 证书
修改下面 -subj 中的信息为你自己的。
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Chengdu/L=Chengdu/O=example/OU=Personal/CN=harbor.chenxie.net" \
-key ca.key \
-out ca.crt
生成服务器证书
证书通常包含一个 .crt 文件和一个 .key 文件,比如 harbor.chenxie.net.crt 和 harbor.chenxie.net.key
1. 生成私钥
openssl genrsa -out harbor.chenxie.net.key 4096
2. 生成证书签名请求(CSR)
修改下面 -subj 中的信息为你自己的。
openssl req -sha512 -new \
-subj "/C=CN/ST=Chengdu/L=Chengdu/O=example/OU=Personal/CN=harbor.chenxie.net" \
-key harbor.chenxie.net.key \
-out harbor.chenxie.net.csr
3. 生成 x509 v3 扩展文件
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=harbor.chenxie.net
DNS.2=chenxie.net
DNS.3=harbor
EOF
4. 使用 v3.ext 文件为 Harbor 主机创建证书
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in harbor.chenxie.net.csr \
-out harbor.chenxie.net.crt
向 Harbor 和 Docker 提供证书
生成 ca.crt , harbor.chenxie.net.crt 和 harbor.chenxie.net.key 文件之后,必须将它们提供给 Harbor和Docker并重新配置Harbor来使用到它。
1. 拷贝服务器证书和key到指定的目录
mkdir -p /data/cert
cp harbor.chenxie.net.crt /data/cert/
cp harbor.chenxie.net.key /data/cert/
2. 转换 harbor.chenxie.net.crt 为 harbor.chenxie.net.cert ,用于Docker使用。
Docker守护进程会将 .crt 文件解释为CA证书,将 .cert 文件解释为客户端证书。
openssl x509 -inform PEM -in harbor.chenxie.net.crt -out harbor.chenxie.net.cert
3. 拷贝服务器证书,key和CA文件到Docker的证书目录。
mkdir -p /etc/docker/certs.d/harbor.chenxie.net/
cp harbor.chenxie.net.cert /etc/docker/certs.d/harbor.chenxie.net/
cp harbor.chenxie.net.key /etc/docker/certs.d/harbor.chenxie.net/
cp ca.crt /etc/docker/certs.d/harbor.chenxie.net/
注意:如果你将默认的nginx端口443改为了其他端口,则创建文件夹时应该加上端口,如将443改为了8888,创建文件夹应该如下:
mkdir -p /etc/docker/certs.d/harbor.chenxie.net:8888
或
mkdir -p /etc/docker/certs.d/harbor_IP:8888
4. 重启docker
systemctl restart docker
部署或重新配置Harbor
现在我们还没有部署Harbor,所以需要配置 harbor.yml 文件并在文件中配置证书指定 hostname和https.
配置 harbor.yml
cd harbor
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
配置 hostname 为: hostname: harbor.chenxie.net
配置 certificate 为:/data/cert/harbor.chenxie.net.crt
配置 private_key 为:/data/cert/harbor.chenxie.net.key
其他默认即可
运行安装脚本
我们已经配置好了 harbor.yml 文件,现在只需要运行 install.sh 即可启动安装,在线安装时间会比较长一点,请耐心等待。
安装 Harbor 有几种不同的配置安装方式:
- Just Harbor, without Notary, Trivy or Chart Repository Service
- Harbor with Notary
- Harbor with Trivy
- Harbor with Chart Repository Service
- Harbor with two or all three of Notary, Trivy, and Chart Repository Service
第一种方式(默认):
Just Harbor, without Notary, Trivy or Chart Repository Service.
也就是只安装 Harbor,不安装 Notary, Trivy or Chart Repository Service.
直接运行 install.sh 即可:
./install.sh
安装成功之后即可使用配置的地址进行访问
https://harbor.chenxie.net/ 进行访问,访问时会报证书错误,忽略即可,因为是自签证书。
默认管理账户为:
用户名:admin
密 码:Harbor12345
命令行登录和推送镜像测试:
1. 在后台新建一个项目,比如:myproject
2. 使用Docker命令登录Harbor,给镜像打Tag,然后推送到Harbor
a. 登录
[root@localhost ~]# docker login harbor.chenxie.net
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/#credentials-store
Login Succeeded
b. 拉取一个ubuntu镜像,重新打tag并推送到Harbor
[root@localhost ~]# docker pull ubuntu
[root@localhost ~]# docker tag ubuntu harbor.chenxie.net/myproject/ubuntu:v1.0
[root@localhost ~]# docker push harbor.chenxie.net/myproject/ubuntu:v1.0
c. 在Harbor控制台查看
其他方式安装
请参考官方文档:
https://goharbor.io/docs/2.4.0/install-config/
猜你喜欢
- 2025-05-11 idea整合dockerfile插件,打包镜像(docker环境可不安装)
- 2025-05-11 超详细!基于k8s+docker+jenkins的一站式 DevOps 环境搭建教程-下
- 2025-05-11 Kubernetes(K8s)+ GitLab + Jenkins 实现CI/CD
- 2025-05-11 docker的镜像和仓库(docker镜像仓库地址)
- 2025-05-11 轻量容器如何改变开发世界?Docker 基本概念与架构详解
- 2025-05-11 微服务时代,运维必须了解的那些事(服务架构演变)
- 2025-05-11 目前还能用的Docker容器加速方案和可用镜像源
- 2025-05-11 替代虚拟机的容器Docker安装教程——(Windows版)
- 2025-05-11 k8s系列-06-containerd的基本操作
- 2025-05-11 K8s+Jenkins+Harbor+Gitlab+Pipeline+Rust 持续集成(三)
你 发表评论:
欢迎- 367℃用AI Agent治理微服务的复杂性问题|QCon
- 358℃初次使用IntelliJ IDEA新建Maven项目
- 357℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 351℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 346℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 342℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)