Harbor
Harbor
1 概念
Harbor是一个开源的企业级容器镜像仓库。旨在提供安全、高性能和易于管理的容器镜像存储、签名和扫描服务。Harbor扩展了开源Docker Distribution功能,增加了用户通常需要的安全性、身份和管理功能。
Harbor优势在于它专为企业级环境设计,提供合规性、性能和互操作性,特别合适在Kubernetes和Docker这样的云原生平台上进行镜像管理。
Harbor适用于需要安全、稳定和高效管理大量Docker镜像的企业,尤其是在云环境、虚拟环境或物理服务器中。它有助于企业实现镜像的集中存储管理、提高研发、测试和部署效率。最佳实践包括合理规划项目结构,利用角色基础的访问控制进行权限分配、定期进行镜像扫描和更新,以及根据需要配置高可用性部署。
2 安装docker
参考《构建Docker镜像》一文第一部分(Docker部署)
3 Harbor部署
3.1 下载
wget https://github.com/goharbor/harbor/releases/download/v2.14.1/harbor-offline-installer-v2.14.1.tgz
3.2 部署
- 解压
#解压文件 tar -xzvf harbor-offline-installer-v2.14.1.tgz #将解压包移动到 /usr/local/路径下 sudo mv harbor /usr/local/
- 修改配置文件
cp harbor.yml.tmpl harbor.yml
- 编辑harbor.yml配置文件(hostname修改为主机IP,并设置端口号以及Harbor仓库登录密码,设置数据卷目录)


- 导入harbor镜像
sudo docker load < harbor.v2.14.1.tar.gz
- 执行预安装命令
sudo ./prepare
- 执行安装脚本
sudo ./install.sh
- 最后输出如下,表示部署成功。

3.3 访问
http://192.168.0.91:8000/

4 重新加载配置
比如,将配置文件harbor.yml中,端口由8000修改为8008。

此时,需要重新执行prepare指令。
sudo ./prepare
停止现有容器
sudo docker-compose down
启动harbor
sudo docker-compose up -d
最后,验证192.168.0.91:8008访问路径是否生效。
5 开启https访问(自签证书)
5.1 生成CA证书
创建证书存放目录
mkdir -p /usr/local/harbor/cert cd /usr/local/harbor/cert
创建包含SANs的证书文件(http.ext)
keyUsage = nonRepudiation, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth, clientAuth subjectAltName=@SubjectAlternativeName [SubjectAlternativeName] IP.1=127.0.0.1 IP.2=192.168.0.91
生成证书
openssl req -new -newkey rsa:2048 -sha256 -nodes -out 192.168.0.91.csr -keyout 192.168.0.91.key -subj "/C=CN/ST=Shanghai/L=Shanghai/O=Super Inc./OU=Web Security/CN=192.168.0.91" openssl x509 -req -days 3650 -in 192.168.0.91.csr -signkey 192.168.0.91.key -out 192.168.0.91.crt -extfile http.ext
配置证书

重启加载配置
sudo ./prepare sudo docker-compose down sudo docker-compose up -d
5.2 将自签证书添加到docker信任存储
将证书下载到docker客户端,并将证书添加到Docker信任目录:
sudo mkdir -p /etc/docker/certs.d/192.168.0.91:8443 sudo cp 192.168.0.91.crt /etc/docker/certs.d/192.168.0.91:8443/ sudo chmod 644 /etc/docker/certs.d/192.168.0.91:8443/192.168.0.91.crt
同时,将自签证书添加到系统CA证书存储:
sudo cp 192.168.0.91.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates
最后,重启Docker服务:
sudo systemctl restart docker
此时,可以登录仓库了:
sudo docker login -u admin -p Harbor12345 https://192.168.0.91:8443
成功登录后,输入如下图所示:

6 发布镜像至Harbor
- 首先登录仓库
sudo docker login -u admin -p Harbor12345 https://192.168.0.91:8443
- 标记镜像
sudo docker tag bsoft-mdc-newiot-aarch64:v1.0.2 192.168.0.91:8443/bsoft-mdc/bsoft-mdc-newiot-aarch64:v1.0.2
- 推送镜像
sudo docker push 192.168.0.91:8443/bsoft-mdc/bsoft-mdc-newiot-aarch64:v1.0.2
- 在harbor管理页面可以查到刚刚推送的镜像

浙公网安备 33010602011771号