快速搭建 Harbor

好风 发表于 2019-01-08T06:17:40.645271Z
引用地址:https://plus.ooclab.com/note/article/1428

以 1.7.1 为例。

step by step

1. 准备环境

mkdir -pv /srv/production/hub.dev.ooclab.com
cd /srv/production/hub.dev.ooclab.com
mkdir -pv lab
cd lab
wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-online-installer-v1.7.1.tgz
tar xf harbor-online-installer-v1.7.1.tgz
cd harbor

2. 配置 harbor.cfg

我修改了以下几处配置:

hostname = hub.dev.ooclab.com
secretkey_path = /data

运行配置

./prepare

拷贝配置

cp docker-compose.yml /srv/production/hub.dev.ooclab.com/
cp -a common /srv/production/hub.dev.ooclab.com/

3. 启动服务

注意 1 启动服务前,我将存储目录统一修改为 /data/production/hub.dev.ooclab.com/ 的前缀。因此需要如下操作:

cd /srv/production/hub.dev.ooclab.com
sed -i -e 's@/data/@/data/production/hub.dev.ooclab.com/@' docker-compose.yml
mkdir -pv /data/production/hub.dev.ooclab.com/
mv /data/secretkey /data/production/hub.dev.ooclab.com/

注意 2 如果我们外部使用 https , 而 harbor 配置使用 http , 需要修改 common/config/registry/config.yml

realm: https://hub.dev.ooclab.com/service/token

注意 3 如果你和我一样,将 harbor 放在一个反向代理(如 nginx)或LB后面,编辑 common/config/nginx/nginx.conf , 注释掉所有的 proxy_set_header X-Forwarded-Proto $scheme; ,在外部的 nginx 里 增加 proxy_set_header X-Forwarded-Proto $scheme;

server {
    listen 443  ssl;
    server_name hub.dev.ooclab.com;

    ssl_certificate      /etc/letsencrypt/live/hub.dev.ooclab.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/hub.dev.ooclab.com/privkey.pem;

    client_max_body_size 0;
    access_log  /data/logs/hub.dev.ooclab.com.access.log;

    location / {
        proxy_read_timeout 1800;
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_pass http://127.0.0.1:10180;
    }
}

启动服务

cd /srv/production/hub.dev.ooclab.com
docker-compose up -d

FAQ

参考 Harbor - 企业私有容器映像仓库