《Harbor 私有仓库搭建:DevOps 潮流中的镜像管理利器》

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私有仓库搭建的全部内容,希望大家都能顺利搭建自己的私有仓库,提高开发和运维的效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值