ps:在开始之前你需要会的基础技能和环境

  1. 会使用vimnano等编辑工具
  2. nginx(可选)
  3. Docker

Harbor安装步骤

1. 更新并安装所需要的工具

sudo apt update
sudo apt upgrade
sudo apt install vim wget tar

2. 前往Harbor的github页面获取最新版的安装包。

https://github.com/goharbor/harbor/releases/

3. 下载最新离线安装包上传到服务器或复制最新的离线安装包链接使用wget命令下载。

wget https://github.com/goharbor/harbor/releases/download/v2.13.2/harbor-offline-installer-v2.13.2.tgz

4. 解压安装包

tar xzvf harbor-offline-installer-v2.13.2.tgz

5. 进入Harbor目录

cd harbor

6. 复制Harbor的配置文件模版

cp harbor.yml.tmpl harbor.yml

7. 编辑harbor.yml文件

vim harbor.yml

更改部分重要的参数

  1. hostname
    #这是访问Harbor的地址,在里面填入服务器的IP地址或者域名
  2. HTTPS设置
    默认的配置是启用了HTTPS的,可以直接填入你的SSL证书。但是我习惯使用nginx来进行HTTPS,所以我这边吧整个HTTPS部分注释掉,把HTTP的端口设置为想要的端口。
#http related config
http:
  #port for http, default is 80. If https enabled, this port will redirect to https port
  port: 4000
#https:
  #端口也可以修改,默认443
  #port: 443
  #证书和私钥的路径
  #**更改下面的路径为你证书文件的路径**
  #certificate: /data/cert/yourdomain.com.crt
  #private_key: /data/cert/yourdomain.com.key
  1. data_volume
    这是 Harbor 存储所有数据(镜像、图表、数据库文件)的路径。默认是 /data,通常不需要修改,但你要确保这个路径所在的磁盘有足够空间。

8. 更改完成后保存。添加nginx配置文件实现HTTPS

vim /etc/nginx/conf.d/harbor.conf

在里面写入下面的配置

server {
    listen 80;
    server_name docker.undefi.me; # 将 gitea.example.com 替换为你的域名

    #强制 HTTP 跳转到 HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name docker.aaa.com; # 将 docker.aaa.com 替换为你的域名

    ssl_certificate /file/SSL/undefi.me.cer; # 替换为你的证书路径
    ssl_certificate_key /file/SSL/undefi.me.key;  # 替换为你的私钥路径

    # SSL 配置(更安全的配置)
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
    ssl_prefer_server_ciphers on;
    # 配置文件大小限制,填0为不限制。
    client_max_body_size 2048m;
    

    location / {
        proxy_pass http://127.0.0.1:4000; # 替换为 harbor http的端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme; # 重要:传递协议
        proxy_redirect off;

        # WebSocket 支持 (如果需要)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

9. 重启nginx应用新增的配置

sudo systemctl restart nginx

10. 执行安装脚本

sudo ./install.sh

安装过程可能需要几分钟。当看到 ✔ ---- Harbor has been installed and started successfully. ---- 的提示时,就表示安装成功了!

11. 检查容器状态

install.sh 执行完毕后,Harbor 的服务会以容器形式在后台运行,运行下面的命令查看状态。

docker compose ps

你应该能看到大约 10 个左右的 harbor- 开头的容器,并且状态都是 runninghealthy

12. 访问 Harbor Web UI

打开你的浏览器,访问你在 harbor.yml 中配置的 hostname 地址。

HTTPS: https://harbor.yourdomain.com
HTTP: http://192.168.5.10
你应该能看到 Harbor 的登录页面,使用账号:admin 密码:Harbot1234登录。

使用Harbor

1.登录到 Harbor

# 使用你在 Harbor UI 上创建的普通用户,或者直接用 admin
docker login harbor.yourdomain.com

输入用户名和密码。

2. 推送和拉取镜像

  1. 创建项目:先在 Harbor UI 上创建一个项目,比如叫 my-app
  2. 标记镜像:将你的本地镜像打上符合 Harbor 格式的标签:<harbor_hostname>/<project_name>/<image_name>:<tag>
  3. 推送镜像:
docker push harbor.yourdomain.com/my-app/busybox:v1
  1. 拉取镜像:
docker pull harbor.yourdomain.com/my-app/busybox:v1