508 字
3 分钟
搭建 Harbor 私有镜像仓库

环境#

  • 服务器:192.168.100.14,已装好 Docker
  • 域名:reg.westos.org(内网域名)

生成证书#

Harbor 需要 HTTPS,先生成自签名证书。

Terminal window
mkdir certs
openssl req -newkey rsa:4096 -nodes -sha256 \
-keyout certs/westos.org.key \
-addext "subjectAltName = DNS:reg.westos.org" \
-x509 -days 365 \
-out certs/westos.org.crt

然后把证书复制到 /data 目录,Harbor 会从这里读取:

Terminal window
mkdir /data
cp -r certs /data

安装 Harbor#

Harbor Release 下载离线安装包:

Terminal window
wget https://github.com/goharbor/harbor/releases/download/v2.14.0/harbor-offline-installer-v2.14.0.tgz
tar zxf harbor-offline-installer-v2.14.0.tgz
cd harbor/

复制配置模板并修改:

Terminal window
cp harbor.yml.tmpl harbor.yml
vim harbor.yml

主要改这几个地方:

hostname: reg.westos.org
http:
port: 80
https:
port: 443
certificate: /data/certs/westos.org.crt
private_key: /data/certs/westos.org.key
harbor_admin_password: 12345 # 改成你的密码

执行安装,带上 --with-trivy 参数会一起安装漏洞扫描工具:

Terminal window
./install.sh --with-trivy

等一会儿,看到 Harbor has been installed and started successfully 就好了。

Docker 客户端配置#

直接 docker login 会报证书错误,因为是自签名的。需要让 Docker 信任这个证书:

Terminal window
mkdir -p /etc/docker/certs.d/reg.westos.org
cp /data/certs/westos.org.crt /etc/docker/certs.d/reg.westos.org/ca.crt
systemctl restart docker
# 重启后 Harbor 也要重新启动
cd ~/harbor
docker compose up -d

现在可以登录了:

Terminal window
docker login reg.westos.org
# Username: admin
# Password: 12345

使用#

浏览器访问 https://reg.westos.org,用 admin 账户登录。

先创建一个项目,比如叫 myproject,选私有。

然后试着推送一个镜像:

Terminal window
docker pull nginx:latest
docker tag nginx:latest reg.westos.org/myproject/nginx:v1.0
docker push reg.westos.org/myproject/nginx:v1.0

在 Web 界面里就能看到推送的镜像了。

拉取也很简单:

Terminal window
docker pull reg.westos.org/myproject/nginx:v1.0

Trivy 扫描问题#

在 Web 界面点”扫描”按钮的时候,Trivy 会报错说下载不了漏洞库。因为它要从 GitHub 拉数据,国内网络不太行。

解决办法是给它配个代理:

Terminal window
cd ~/harbor
vim ./common/config/trivy-adapter/env

加上代理配置(换成你自己的代理地址):

Terminal window
HTTP_PROXY=http://192.168.10.141:7897
HTTPS_PROXY=http://192.168.10.141:7897

然后重启:

Terminal window
docker compose down
docker compose up -d

现在扫描应该能正常工作了。扫描结果会显示镜像里有哪些漏洞,方便评估风险。

其他机器使用#

如果其他机器要用这个仓库,需要:

  1. 配置域名解析(/etc/hosts 或 DNS)
  2. 复制证书到客户端:
    Terminal window
    scp root@192.168.100.14:/data/certs/westos.org.crt /etc/docker/certs.d/reg.westos.org/ca.crt
  3. 登录即可

就这样,基本的 Harbor 仓库就搭好了。

搭建 Harbor 私有镜像仓库
https://dev-null-sec.github.io/posts/搭建harbor私有镜像仓库/
作者
DevNull
发布于
2024-11-07
许可协议
CC BY-NC-SA 4.0