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上找到指定版本即可:
下载到本地,上传到要部署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的方式配置
修改好配置文件之后,执行如下命令
# 检查启动所需的镜像,如果没有就会拉取镜像,然后生成相关的配置文件
./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的配置,讲的也比较简单,实际生产环境可能需要考虑更多,比如集群、备份、存储空间规划、镜像安全、权限划分等。