habor1.10.0安装配置

  • 前言
  • 一、安装docker
  • 二、harbor安装与简单配置
  • 1. 下载指定版本harbor
  • 2. harbor简单配置
  • 三、配置harbor前面的nginx
  • 1. 添加nginx配置
  • 2. 添加dns解析
  • 四、报错
  • 1. push报错
  • 2. HTTP 413 response body
  • 五、结语


前言

  • Harbor 是由 VMware 公司中国团队为企业用户设计的 Registry server 开源项目,包括了权限管理(RBAC)、LDAP、审计、管理界面、自我注册、HA 等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能。
  • 作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。提升用户使用 Registry 构建和运行环境传输镜像的效率。Harbor 支持安装在多个 Registry 节点的镜像资源复制,镜像全部保存在私有 Registry 中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor 也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

一、安装docker

执行如下命令:

# 安装docker
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加docker源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新并安装docker-ce
yum makecache fast
yum -y install docker-ce # 直接安装是安装的最新版本
# 指定版本安装
yum list docker-ce --showduplicates | sort -r # 查看所有的版本
yum -y install docker-ce-18.09.7-3.el7        # 安装指定版本

systemctl start docker && systemctl enable docker

# 配置docker镜像地址
mkdir /etc/docker/
touch /etc/docker/daemon.json
cat > /etc/docker/daemon.json <<EOF
{
    "oom-score-adjust": -1000,
    "log-driver": "json-file",
    "log-opts": {
    "max-size": "100m",
    "max-file": "3"
    },
    "max-concurrent-downloads": 10,
    "max-concurrent-uploads": 10,
    "registry-mirrors": ["https://7bezldxe.mirror.aliyuncs.com"],
    "storage-driver": "overlay2",
    "storage-opts": [
    "overlay2.override_kernel_check=true"
    ]
}
EOF

systemctl daemon-reload && systemctl restart docker
systemctl restart docker
systemctl status docker # 确认docker是否正常启动
docker info # 确认镜像源配置是否生效

二、harbor安装与简单配置

1. 下载指定版本harbor

在github上找到指定版本即可:

checkra1n最新版ISO镜像文件_nginx


下载到本地,上传到要部署harbor的主机上的指定文件夹下,解压缩

2. harbor简单配置

修改配置文件harbor.yml

hostname: hub.test.com   # 对外的域名
http:
  port: 6080             # harbor服务的端口
external_url: https://hub.test.com   # 对外使用https
harbor_admin_password: Harbor12345   # 初始管理员密码
database:
  password: 123456      # pg数据库的密码
data_volume: /data/     # 自定义数据路径

注意:我们用前端nginx代理到harbor的方式配置

checkra1n最新版ISO镜像文件_docker_02


修改好配置文件之后,执行如下命令

# 检查启动所需的镜像,如果没有就会拉取镜像,然后生成相关的配置文件
./prepare --with-clair   # 配置检查,生成配置文件,配置扫描器
# 安装,启动
./install.sh --with-clair   # 启动配置扫描器

三、配置harbor前面的nginx

1. 添加nginx配置

nginx域名配置文件如下:

server {
  listen 80;
  server_name hub.example.com;    # 跟刚才harbor.yml配置文件里面的external_url域名配置相同

  listen 443 ssl;
  ssl_certificate ./cert/example.pem;
  ssl_certificate_key ./cert/example.key;
  ssl_session_timeout 5m; 
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
  ssl_prefer_server_ciphers on;

  client_max_body_size 3G;

  location / {
    proxy_pass http://127.0.0.1:6080;    # 指向到harbor服务的端口
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

  access_log /var/log/nginx/hub.example.com-access.log access;
  error_log /var/log/nginx/hub.example.com-error.log;
}

2. 添加dns解析

配置启动好nginx之后,在DNS域名上添加hub.example.com的域名解析(有内网DNS最好)。
添加完域名解析之后,就可以通过浏览器访问了。

四、报错

完成上面的配置之后,我们通过浏览器访问已经完全没有问题,但是在shell里面,通过命令行登录,进行push操作,还可以能出现问题

1. push报错

unauthorized: unauthorized to access repository: library/nginx-demo, action: push: unauthorized to access repository: library/nginx-demo, action: push
解决方式:
修改harbor目录下面common/config/nginx/nginx.conf配置文件

# proxy_set_header X-Forwarded-Proto $scheme;  # 这一段注释掉
      proxy_set_header X-Forwarded-Proto https; # 换成这个

参考:http://www.amd5.cn/atang_4331.html

2. HTTP 413 response body

error parsing HTTP 413 response body: invalid character '<' looking for beginning of value: "<html>\r\n<head><title>413 Request Entity Too Large</title></head>\r\n<body>\r\n<center><h1>413 Request Entity Too Large</h1></center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n"

这个是前面的nginx里面client_max_body_size这个配置加大就可以了。

五、结语

上面只是单机版的harbor的配置,讲的也比较简单,实际生产环境可能需要考虑更多,比如集群、备份、存储空间规划、镜像安全、权限划分等。