前言
1、系统版本:CentOS9
2、harbor版本:v2.9.4
3、提前安装好docker和docker-compose,参考地址。我这里安装的版本是docker:26.1.3 docker-compose:v2.27.1
4、文章最后有一键安装的脚本,如果不想一步步手动安装的,可以执行脚本安装
安装步骤
下载安装包
1、下载地址:harbor,选择v2.9.4版本获取下载地址
2、下载安装包
wget https://github.com/goharbor/harbor/releases/download/v2.9.4/harbor-offline-installer-v2.9.4.tgz --no-check-certificate
解压安装包
-C:解压到目标地址,可以自行修改
# 安装地址
mkdir -p /root/server
# 解包
tar -zxvf harbor-offline-installer-v2.9.4.tgz -C /root/server
导入harbor自带的镜像
1、导入镜像
docker load -i /root/server/harbor/harbor.v2.9.4.tar.gz
2、查看导入的镜像
docker images
修改配置文件
1、复制一份配置文件
# 切换到harbor的解压目录
cd /root/server/harbor
# 复制配置文件
cp harbor.yml.tmpl harbor.yml
2、修改复制出来的配置文件
vim harbor.yml
查看当前主机名称:hostname
主要修改以下内容
# 当前主机的名称
hostname: harbor-server
# 登录harbor web界面的密码
harbor_admin_password: admin123123
# 禁用https,注释掉所有https相关的内容
#数据存储位置,如果路径不存在会自动创建
data_volume: /data/barbor
生成配置文件
新生成的文件
执行安装脚本
./install.sh
安装成功如图所示
制作系统服务
将harbor制作成系统服务,方便以后操作
编写harbor.service文件
vim /etc/systemd/system/harbor.service
内容如下:
ExecStart:修改为自己的路径
ExecStop:修改为自己的路径
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor
[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/bin/docker-compose --file /root/server/harbor/docker-compose.yml up
ExecStop=/usr/bin/docker-compose --file /root/server/harbor/docker-compose.yml down
[Install]
WantedBy=multi-user.target
加载服务
# 加载
systemctl daemon-reload
# 启动harbor
systemctl start harbor.service
# 设置开机自启
systemctl enable harbor.service
# 查看服务状态
systemctl status harbor.service
harbor使用
登录harbor
地址:输入自己虚拟机的ip地址访问harbor登录界面
账号:默认的是admin
密码:harbor.yml文件中定义的密码
登录成功后的界面
添加新用户
新用户登录
一键安装脚本
执行命令
参数1:tar解压的目标路径
参数2:tar包的下载地址
参数3:harbor web界面登录的密码,非必须
./install.sh /root/server https://github.com/goharbor/harbor/releases/download/v2.9.4/harbor-offline-installer-v2.9.4.tgz admin123
脚本内容
#!/bin/bash
set -ex
# 校验参数
if [ ! "$1" ];then
echo "请输入安装地址"
exit 1
fi
if [ ! "$2" ];then
echo "请输入安装包下载地址"
exit 1
fi
# harbor登录密码,如果不输入则用默认的
harbor_password=$3
if [ ! "$3" ];then
harbor_password=Harbor12345
fi
install_dir=$1
download_url=$2
# 安装包下载后存放的位置
k_path=`pwd`
# 文件夹不存在则创建
if [ ! -d $1 ];then
mkdir -p $1
echo "======================= 创建文件夹 $1 ======================="
fi
# 下载安装包
wget ${download_url} --no-check-certificate
# 获取安装包名称
package_name=`ls -t1 ${k_path} | grep harbor | grep *.tgz | awk '{print $1}'`
# 解压安装包
tar -zxvf ${k_path}/$package_name -C ${install_dir}
# 获取解压后的文件夹名称
folder_name=`ls -t1 ${install_dir} | grep harbor | awk '{print $1}'`
# 切换目录到解压后的路径
cd ${install_dir}/${folder_name}
curr_dir=`pwd`
# 获取镜像的tar包名称
harbar_tar_name=`ls -t1 ${curr_dir} | grep harbor | grep tar.gz | awk '{print $1}'`
# 导入harbor镜像
docker load -i ${curr_dir}/${harbar_tar_name}
# 打印导入后的镜像
echo "=================== 导入后的harbor镜像 ==================="
docker images
# 复制配置文件
cp harbor.yml.tmpl harbor.yml
# 获取主机名
host_name=`hostname`
# 替换内容
sed -i "s/hostname: reg\.mydomain\.com/hostname: ${host_name}/" ${curr_dir}/harbor.yml
sed -i "s/harbor_admin_password: Harbor12345/harbor_admin_password: ${harbor_password}/" ${curr_dir}/harbor.yml
sed -i "s/https:/# https:/" ${curr_dir}/harbor.yml
sed -i "s/ port: 443/# port: 443/" ${curr_dir}/harbor.yml
sed -i "s/ certificate:/# certificate:/" ${curr_dir}/harbor.yml
sed -i "s/ private_key:/# private_key:/" ${curr_dir}/harbor.yml
sed -i "s/data_volume: \/data/data_volume: \/data\/harbor/" ${curr_dir}/harbor.yml
# 执行prepare
./prepare
# 执行安装脚本
./install.sh
echo "=================== 制作harbor系统服务 ==================="
cat << EOF > /etc/systemd/system/harbor.service
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor
[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/bin/docker-compose --file ${curr_dir}/docker-compose.yml up
ExecStop=/usr/bin/docker-compose --file ${curr_dir}/docker-compose.yml down
[Install]
WantedBy=multi-user.target
EOF
# 加载
systemctl daemon-reload
# 启动harbor
systemctl start harbor.service
# 设置开机自启
systemctl enable harbor.service
# 查看服务状态
systemctl status harbor.service
# 删除安装包
rm -rf ${k_path}/${package_name}
脚本执行结果
脚本执行结束后,最后面会打印harbor服务的运行状态,然后登录harbor即可使用
结束语
以上便是harbor镜像仓库的搭建过程,如有问题欢迎交流