Harbor私有仓库搭建课程
一、课程概述
今天我们要学习的是如何搭建Harbor私有仓库。Harbor是一个开源的企业级Docker Registry,用于存储和分发Docker镜像。在实际的开发和运维工作中,私有仓库可以帮助我们更好地管理和控制镜像的使用,提高安全性和效率。接下来,我们将一步一步地完成Harbor私有仓库的搭建过程。
二、基础环境准备
(一)系统要求
首先,我们要明确搭建Harbor私有仓库的基础环境要求。我们需要使用CentOS 7+或者Ubuntu 20.04 LTS操作系统,并且硬件资源方面,至少需要2核CPU、4GB内存以及50GB硬盘空间。这些要求是为了确保Harbor能够稳定运行。
-
CentOS 7+ / Ubuntu 20.04 LTS
-
2核CPU / 4GB内存 / 50GB硬硬
(二)安装Docker引擎
以CentOS 9为例,我们来安装Docker引擎。下面的命令将帮助我们完成这一过程:
hostnamectl set-hostname harbor.example.com
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
systemctl enable --now docker
第一行命令hostnamectl set-hostname harbor.example.com
是设置主机名,方便我们后续的管理和识别。接着使用yum
命令安装yum-utils
工具,然后添加Docker的软件源,再通过yum install
命令安装Docker引擎及其相关组件,最后使用systemctl enable --now docker
命令启用并启动Docker服务。
(三)安装docker-compose
接下来我们要安装docker-compose,它是一个用于定义和运行多容器Docker应用的工具。我们可以使用以下命令进行安装:
curl -L "https://github.com/docker/compose/releases/download/v2.33.0/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
这里使用curl
命令从GitHub下载docker-compose的二进制文件,并将其保存到/usr/local/bin
目录下,然后使用chmod +x
命令给这个文件添加可执行权限。
三、Harbor快速部署
(一)下载离线安装包
我们可以使用wget
命令下载Harbor的离线安装包,并将其解压到指定 /opt 目录:
wget https://github.com/goharbor/harbor/releases/download/v2.12.2/harbor-offline-installer-v2.12.2.tgz
tar zxvf harbor-offline-installer-v2.12.2.tgz -C /opt
(二)修改配置文件
进入解压后的目录,复制配置文件模板并进行编辑:
cd /opt/harbor
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
在harbor.yml
文件中,有几个关键的配置项需要我们关注:
hostname: 192.168.10.10 # 替换为实际IP或域名
http:
port: 80
# 注译下面四项
#https:
# port: 443
#certificate: /your/certificate/path
#private_key: /your/private/key/path
harbor_admin_password: Tech@12345 # 修改默认密码
data_volume: /data/harbor # 存储路径
这里的hostname
需要替换为你实际使用的IP地址或域名,harbor_admin_password
可以修改为你自己想要的密码,data_volume
是Harbor的数据存储路径。
启用HTTPS(可选)
如果我们需要启用HTTPS,需要进行以下操作:
# 创建证书目录
mkdir -p /data/certs && cd /data/certs
# 生成证书(有效期365天)
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout tls.key -out tls.crt \
-subj "/CN=harbor.example.com" \
-addext "subjectAltName=IP:192.168.10.10"
# 设置文件权限
chmod 400 tls.*
然后修改harbor.yml
配置:
# 启用HTTPS并指定证书路径
https:
port: 443
certificate: /data/certs/tls.crt
private_key: /data/certs/tls.key
(三)启动服务
使用以下命令启动Harbor服务,并集成Trivy漏洞扫描工具:
./install.sh --with-trivy # 集成Trivy漏洞扫描工具
#若安装时未启用Trivy,可通过更新配置并重启Harbor服务补装(可选)
./prepare --with-trivy
docker-compose down && docker-compose up -d
# 重启 harbor (可选)
cd /opt/harbor
docker-compose down
docker-compose up -d
(四)查看Docker进程
我们可以使用docker ps -a
命令查看Docker进程,确认Harbor的相关容器是否正常运行:
[root@harbor harbor]# docker ps -a --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}"
CONTAINER ID NAMES STATUS PORTS
124894e24a35 harbor-jobservice Up 9 minutes (healthy)
2609b9745c50 nginx Up 9 minutes (healthy) 0.0.0.0:80->8080/tcp, [::]:80->8080/tcp, 0.0.0.0:443->8443/tcp, [::]:443->8443/tcp
ef715133b016 harbor-core Up 9 minutes (healthy)
7cf3f1d9cf79 registryctl Up 9 minutes (healthy)
110b61abe302 harbor-portal Up 9 minutes (healthy)
70fb8908e2a3 redis Up 9 minutes (healthy)
a050e1d74142 registry Up 9 minutes (healthy)
a9780feb2ebc harbor-db Up 9 minutes (healthy)
4347334a3e5a harbor-log Up 9 minutes (healthy) 127.0.0.1:1514->10514/tcp
(五)测试登陆
我们需要修改Docker的配置,以允许访问我们的私有仓库:
cat > /etc/docker/daemon.json << EOF
{
"insecure-registries": [
"192.168.10.10:80",
"192.168.10.10:443"
],
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://hub.urlsa.us.kg",
"https://docker.urlsa.us.kg"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
EOF
systemctl restart docker
docker start $(docker ps -aq)
# 测试登陆,只要开了 https,系统默认必须使用 https 登陆和上传
[root@harbor harbor]# docker login 192.168.10.10:443 -u admin
i Info → A Personal Access Token (PAT) can be used instead.
To create a PAT, visit https://app.docker.com/settings
Password:
WARNING! Your credentials are stored unencrypted in '/root/.docker/config.json'.
Configure a credential helper to remove this warning. See
https://docs.docker.com/go/credential-store/
Login Succeeded
四、功能验证与配置
(一)访问管理界面
我们可以通过浏览器访问http://[IP]
或 https://[IP]
,使用账号admin
和我们之前配置的密码进行登录。
(二)客户端配置
同样需要修改Docker配置:
# 修改Docker配置
echo '{"insecure-registries":["192.168.10.10:443"]}' > /etc/docker/daemon.json
systemctl restart docker
(三)测试镜像推送
我们可以使用以下命令进行镜像推送测试:
docker pull nginx:alpine
docker tag nginx:alpine 192.168.10.10:443/library/nginx:alpine
docker login 192.168.10.10:443 -u admin
docker push 192.168.10.10:443/library/nginx:alpine
五、维护与清理
(一)服务管理命令
如果我们需要停止Harbor服务,可以使用docker-compose down
命令;如果需要启动服务,则使用docker-compose up -d
命令:
# 停止服务
docker-compose down
# 启动服务
docker-compose up -d
(二)数据清理
如果我们需要清理Harbor的数据,可以使用以下命令:
rm -rf /data/harbor/* # 清除存储数据
六、方案特点
(一)轻量化
Harbor采用单节点部署,资源占用低,非常适合测试环境使用。
(二)功能完整
Harbor包含RBAC权限、镜像管理界面等核心功能,能够满足我们对镜像管理的基本需求。
(三)快速重置
通过清理存储目录,我们可以快速恢复Harbor的初始状态,方便我们进行测试和调试。
七、注意事项
最后需要注意的是,在生产环境中,我们需要启用HTTPS并配置持久化存储,而在测试环境中,我们可以暂时忽略证书告警。
以上就是Harbor私有仓库搭建的全部内容,希望大家都能顺利搭建自己的私有仓库,提高开发和运维的效率。