一、准备一台Linux主机

我用了一台VMware虚拟机,配置如下:

IP:192.168.1.79

安装时注意一定要将最大的空间分给/data,因为Harbor默认会使用这个分区

官网硬件要求

Harbor安装配置全过程_Docker

1、开SSH

systemctl enable sshd

2、关闭SELINUX

vi /etc/sysconfig/selinux

修改下边红字部分

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

# enforcing - SELinux security policy is enforced.

# permissive - SELinux prints warnings instead of enforcing.

# disabled - No SELinux policy is loaded.

SELINUX=disabled

# SELINUXTYPE= can take one of three two values:

# targeted - Targeted processes are protected,

# minimum - Modification of targeted policy. Only selected processes are protected.

# mls - Multi Level Security protection.

SELINUXTYPE=targeted

3、安装rz

yum -y install lrzsz

之后上传文件一定要用-be参数(其中-b是--binary用二进制的方式上传,-e是--escape强制escape所有控制字符),否则上传的文件不完整

rz –be

4、安装wget

yum -y install wget

5、更换yum源,用于提速yum

(1)备份yum源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

(2)下载新的CentOS-Base.repo 到/etc/yum.repos.d/

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

清理缓存

yum clean all

重新生成缓存

yum makecache

6、关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

 

二、安装Harbor

官网教程:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md

1、安装必须的组件

官网软件要求见下,实际安装最新版本即可

Harbor安装配置全过程_云计算_02

安装python

CentOS7默认自带已安装好

安装docker

由于Docker已分为社区版和企业版,要装最新版本只能选择社区版,所以不要直接用yum install docker –y安装,否则安装的是旧版的Docker

(1)安装所需的软件包 yum-utils、device-mapper-persistent-data和 lvm2

yum remove docker-latest-logrotate docker-logrotate docker-selinux dockdocker-engine

yum install -y yum-utils device-mapper-persistent-data lvm2

(2)国内部分用户可能无法连接docker官网提供的源,这里提供阿里云的镜像节点供测试使用

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

rpm --import http://mirrors.aliyun.com/docker-ce/linux/centos/gpg

yum makecache fast

yum -y install docker-ce

启动docker和检查运行状态

systemctl start docker

systemctl status docker

将服务加入到启动项

systemctl enable docker

查看版本

Harbor安装配置全过程_云计算_03

安装docker-compose

编译安装pip

https://pypi.org/project/setuptools/

yum install unzip -y

unzip setuptools-40.4.3.zip

cd setuptools-40.4.3

python setup.py install

https://pypi.org/project/pip/

tar -xf pip-18.1.tar.gz

cd pip-18.1

python setup.py install

加速pip

cd ~

mkdir .pip

ls ~/.pip

vi ~/.pip/pip.conf

写入

[global]

index-url = http://mirrors.aliyun.com/pypi/simple/

 

[install]

trusted-host=mirrors.aliyun.com

pip安装docker-compose

pip install docker-compose

pip install --upgrade docker-compose

查看版本

docker-compose -v

Harbor安装配置全过程_云计算_04

2、安装Harbor

(1)从这里下载:https://github.com/goharbor/harbor/releases。PS:不×××无法下载

Harbor安装配置全过程_云计算_05

一定要下载offline离线安装包:https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.6.1.tgz

(2)解压

tar xvf harbor-offline-installer-v1.6.1.tgz

移动解压后的harbor目录到/data/app/,因为/data分区是划分出来的

mv harbor /data/app/

(3)编辑vi harbor.cfg文件

cd /data/app/harbor

cp harbor.cfg harbor.cfg.bak

vi harbor.cfg

内容:

hostname = 192.168.1.79

ui_url_protocol = http

max_job_workers = 10

customize_crt = off

ssl_cert = /data/cert/server.crt

ssl_cert_key = /data/cert/server.key

secretkey_path = /data

admiral_url = NA

log_rotate_count = 50

log_rotate_size = 200M

http_proxy =

https_proxy =

no_proxy = 127.0.0.1,localhost,ui,registry

email_identity =

email_server = smtp.mydomain.com

email_server_port = 25

email_username = sample_admin@mydomain.com

email_password = abc

email_from = admin <sample_admin@mydomain.com>

email_ssl = false

email_insecure = false

harbor_admin_password = *******

auth_mode = ldap_auth

self_registration = off

token_expiration = 60

project_creation_restriction = everyone

db_host = postgresql

db_password = root123

db_port = 5432

db_user = postgres

redis_host = redis

redis_port = 6379

redis_password =

redis_db_index = 1,2,3

clair_db_host = postgresql

clair_db_password = root123

clair_db_port = 5432

clair_db_username = postgres

clair_db = postgres

clair_updaters_interval = 12

uaa_endpoint = uaa.mydomain.org

uaa_clientid = id

uaa_clientsecret = secret

uaa_verify_cert = true

uaa_ca_cert = /path/to/ca.pem

registry_storage_provider_name = filesystem

registry_storage_provider_config =

registry_custom_ca_bundle =

解释:

原来没注释的参数不要注释掉,否则下边一步不通过。留默认即可

hostname:配置主机名称,不可以设置127.0.0.1,localhost这样的主机名,可以是IP或者域名

ui_url_protocol:指定使用HTTP协议还是HTTPS协议

Email settings:邮箱设置,option配置,只在首次启动生效,可以登陆UI后修改

harbor_admin_password:设置管理员的初始密码,只在第一次登录时使用

auth_mode:用户认证模式,默认是db_auth,也可以使用ldap_auth验证。

db_password:使用db需要指定连接数据库的密码

self_registration:是否允许自行注册用户,默认是on,新版本可以在图形界面中修改。

max_job_workers:最大工作数,默认是10个

customize_crt:是否为token生成证书,默认为on

ssl_cert:nginx cert与key文件的路径, 只有采用https协议是才有意义

ssl_cert:nginx cert与key文件的路径, 只有采用https协议是才有意义

secretkey_path:The path of secretkey storage

admiral_url:Admiral's url, comment this attribute, or set its value to NA when Harbor is standalone

clair_db_password:未启用calir服务,但解压目录下的"./prepare"文件中要检查以下相关参数配置,不能注释,否则环境准备检查不能通过,报"ConfigParser.NoOptionError: No option u'clair_db_password' in section: u'configuration' "相关错误;或者在"./prepare"中注释相关检查与定义,但需要注意,文件中的关联太多,推荐修改"harbor.cfg"文件即可

ldap_url:ladp相关设置,如未采用ldap认证,但解压目录下的"./prepare"文件中要检查以下相关参数配置,不能注释,否则环境准备检查不能通过,报"ConfigParser.NoOptionError: No option u'ldap_timeout' in section: u'configuration' "相关错误;或者在"./prepare"中注释相关检查与定义,但需要注意,文件中的关联太多,推荐修改"harbor.cfg"文件即可

ldap_scope:

Harbor安装配置全过程_云计算_06

self_registration:默认开启自注册,off为关闭

token_expiration:token有效时间,默认30minutes

project_creation_restriction:创建项目权限控制,默认是"everyone"(所有人),可设置为"adminonly"(管理员)

verify_remote_cert:与远程registry通信时是否采用验证ssl

其他使用默认值

(4)确认无误后,使用./install.sh命令开始安装

Harbor安装配置全过程_云计算_07

Harbor安装配置全过程_Docker_08

4、启动和停止(必须在docker-compose.yml目录下运行命令,如/data/app/Harbor目录)

停止Harbor

docker-compose stop

Harbor安装配置全过程_云计算_09

启动Harbor

docker-compose start

Harbor安装配置全过程_Docker_10

5、登录测试

http://192.168.1.79

初始密码:admin/Harbor12345

Harbor安装配置全过程_Docker_11

登录后的页面

Harbor安装配置全过程_云计算_12

使用普通用户登录后创建一个新项目

Harbor安装配置全过程_Docker_13

项目名称:sonarqube-xywg

Harbor安装配置全过程_云计算_14

创建完毕

Harbor安装配置全过程_Docker_15

6、上传镜像

在需要上传镜像的服务器上修改docker仓库连接方式为http,否则默认https无法连接。这里以192.168.1.155上我修改的sonarqube镜像为例

vi /etc/docker/daemon.json

加入

{

"insecure-registries" : ["192.168.1.79"]

}

Harbor安装配置全过程_云计算_16

重启Docker生效

systemctl restart docker

重启Docker之前记得先停止所有容器,如果忘了停止容器,则在重启完Docker后使用docker restart <CONTAINER ID>命令启动容器,不要docker rm <CONTAINER ID>,否则容器修改的内容都被删除了

再次登录试试

docker login 192.168.1.79

Harbor安装配置全过程_Docker_17

开始上传操作

docker commit -m 'xywg' 4da3dcf3c046 sonarqube-xywg

docker tag sonarqube-xywg 192.168.1.79/operation/sonarqube-xywg

docker push 192.168.1.79/operation/sonarqube-xywg

特别举例:将Python官方dokcer镜像上传到本地仓库

docker tag docker.io/python:3.7.2 192.168.1.79/public/python:3.7.2

docker push 192.168.1.79/public/python:3.7.2

解释:

docker commit -m 镜像信息 <CONTAINER ID> 新镜像名[:版本号等tag标签]

#从现有容器中生成新镜像

docker tag 源镜像名[:版本号等tag标签] Docker仓库Host/项目名/目标镜像名[:版本号等tag标签]

#改变镜像标签,标记本地镜像是已经被归入Docker仓库的镜像。可以在docker commi的时候直接标记为Docker仓库的镜像

docker push 镜像名[:版本号等tag标签] #将本地的镜像上传到镜像仓库,注意每次push前需docker login 192.168.1.79确认是否已经登录了私有仓库,push后需docker logout 192.168.1.79登出私有仓库。如果push到公共项目必须登录admin账号才可以,如果用了非admin账户push到公共项目会出如下错误:denied: requested access to the resource is denied

Harbor安装配置全过程_云计算_18

不指定版本号等tag标签时,Docker会自动帮我们补上latest的tag。这个latest其实在使用中不是最新的意思,而是默认值(defalut)的意思。

执行结果:

Harbor安装配置全过程_云计算_19

进入Harbor的项目中查看

Harbor安装配置全过程_云计算_20

查看已上传的sonarqube镜像

Harbor安装配置全过程_Docker_21

PS:Harbor有分级概念:

(1)最上边是项目(项目名):实际操作中按照每个不同的项目名称来建项目,交由不同项目的负责人维护

Harbor安装配置全过程_云计算_22

(2)接下来是项目中的镜像仓库(镜像名):镜像仓库中的镜像名按照项目名或者jar包war名来命名,但要求命名一次不能随意更改

Harbor安装配置全过程_Docker_23

(3)最后是仓库中不同版本的镜像(tag版本标签):必须标明版本号,不能空或者用lastest(下图lastest是演示)

Harbor安装配置全过程_Docker_24