转载自:Harbor仓库搭建及简单使用_hxt的博客-CSDN博客_harbor
一、为什么搭建Harbor仓库
就像我们有了本地git代码工具还需要代码托管平台gerrit,gitlab一样,Harbor是由Vmware公司开源的管理容器镜像的平台。
二、环境准备
Harbor的所有服务组件都是在Docker中部署的,所以官方安装使用Docker-compose快速部署,所以需要安装Docker、Docker-compose。由于Harbor是基于Docker Registry V2版本,所以就要求Docker版本不小于1.10.0,Docker-compose版本不小于1.6.0
准备一台虚拟机,我这里准备的是centos7
1)安装并启动docker
安装所需的包。yum-utils提供了yum-config-manager 效用,并device-mapper-persistent-data和lvm2由需要 devicemapper存储驱动程序
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
设置稳定存储库
[root@localhost ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装Docker CE
[root@localhost ~]# yum install -y docker-ce docker-ce-cli containerd.io
2)、安装Docker-compose
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
如果你还不了解 YML 文件配置,可以先阅读 YAML 入门教程。
Compose 使用的三个步骤:
-
使用 Dockerfile 定义应用程序的环境。
-
使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
-
最后,执行 docker-compose up 命令来启动并运行整个应用程序。
下载指定版本的docker-compose
[root@localhost ~]# curl -L https://github.com/docker/compose/releases/download/1.13.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
原博文使用的是1.13.0, 我们可以到https://github.com/docker/compose/releases 下查看版本,可以下载最新版本:
curl -L https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
二进制文件赋可执行权限
[root@localhost ~]# chmod +x /usr/local/bin/docker-compose
测试下docker-compose是否安装成功
[root@localhost ~]# docker-compose --version
Docker Compose version v2.2.3
三、Harbor服务搭建及启动
1)、下载Harbor安装文件
从GitHub上https://github.com/goharbor/harbor/releases下载指定版本的安装包
我下载了最新版本:v1.10.10
[root@localhost ~]# mkdir -p /harbor
[root@localhost ~]# cd /harbor/
[root@localhost harbor]# wget https://github.com/goharbor/harbor/releases/download/v1.10.10/harbor-online-installer-v1.10.10.tgz
[root@localhost harbor]# ls
harbor-online-installer-v1.10.10.tgz
[root@localhost harbor]# tar -zxf harbor-online-installer-v1.10.10.tgz
2)、配置Harbor
[root@localhost harbor]# ls
harbor harbor-online-installer-v1.10.10.tgz
[root@localhost harbor]# cd harbor
[root@localhost harbor]# ls
LICENSE common common.sh docker-compose.yml harbor.yml install.sh prepare
[root@localhost harbor]# vi harbor.yml
注意,新版本的docker配置放在harbor.yml中。
配置文件harbor.yml详解:
# Configuration file of Harbor
# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: 机器ip地址或域名
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80
# https related config
https:
# https port for harbor, default is 443
# port: 443
# The path of cert and key files for nginx
# certificate: /your/certificate/path
# private_key: /your/private/key/path
配置很简单,
首先要修改hostname为机器地址,使用的是http,所以https部分需要注掉。没有搭建自己的数据库,所以使用了默认的数据库。
还需要修改ldap认证部分。
3)、启动Harbor
修改完配置文件后,在的当前目录执行./install.sh
,Harbor服务就会根据当期目录下的docker-compose.yml开始下载依赖的镜像,检测并按照顺序依次启动各个服务
[root@localhost harbor]# ./install.sh
Harbor依赖的镜像及启动服务如下:
[root@localhost harbor]# docker-compose ps
NAME COMMAND SERVICE STATUS PORTS
harbor-core "/harbor/harbor_core" core running (healthy)
harbor-db "/docker-entrypoint.…" postgresql running (healthy) 5432/tcp
harbor-jobservice "/harbor/harbor_jobs…" jobservice running (healthy)
harbor-log "/bin/sh -c /usr/loc…" log running (healthy) 127.0.0.1:1514->10514/tcp
harbor-portal "nginx -g 'daemon of…" portal running (healthy) 8080/tcp
nginx "nginx -g 'daemon of…" proxy running (healthy) 0.0.0.0:80->8080/tcp, :::80->8080/tcp
redis "redis-server /etc/r…" redis running (healthy) 6379/tcp
registry "/home/harbor/entryp…" registry running (healthy) 5000/tcp
registryctl "/home/harbor/start.…" registryctl running (healthy)
启动完成后,访问刚设置的hostname即可,默认是80端口,如果端口占用,可以去修改docker-compose.yml文件中,对应服务的端口映射。
4) 配置LDAP
我配置的是AD,折腾了半天,本来以为是在harbor.yml里面写配置的,结果发现是可以到界面上去配置的。
用管理员账号登录harbor:
用户名:admin
密码:harbor.yml中配的harbor_admin_password部分
进入配置管理->认证模式:
选择LDAP
我简单的配了几个字段:
LDAP URL ldap://XXX.389
LDAP搜索DN XXX@XXX 注意这里使用@的写法,如果只写搜索用户名,会报49,52e的错误
LDAP搜索密码 *****
LDAP基础DN OU=XXX,DC=XXX,DC=XXX
LDAP用户UID sAMAccountName
LDAP搜索范围 子树
LDAP组成员 memberof
刚开始我的搜索DN配置的不对,没有写得很具体,导致如下失败,后来写成admin@example.com的形式就能登上了。
error: LDAP Result Code 49 "Invalid Credentials": 80090308: LdapErr: DSID-0C090447, comment: AcceptSecurityContext error, data 52e, v3839
如果配置不成功,想看日志,日志文件的地址配置在:harbor/docker-compose.yml中,
log:
image: goharbor/harbor-log:v1.10.10
container_name: harbor-log
restart: always
dns_search: .
cap_drop:
- ALL
cap_add:
- CHOWN
- DAC_OVERRIDE
- SETGID
- SETUID
volumes:
- /var/log/harbor/:/var/log/docker/:z
#日志文件映射在系统的/var/log/harbor目录,认证失败的错误日志在core.log中。