千家信息网

Harbor安装配置全过程

发表于:2024-10-02 作者:千家信息网编辑
千家信息网最后更新 2024年10月02日,一、准备一台Linux主机我用了一台VMware虚拟机,配置如下:IP:192.168.1.79安装时注意一定要将最大的空间分给/data,因为Harbor默认会使用这个分区官网硬件要求1、开SSHs
千家信息网最后更新 2024年10月02日Harbor安装配置全过程

一、准备一台Linux主机

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

IP:192.168.1.79

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

官网硬件要求

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、安装必须的组件

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

安装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

查看版本

安装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

2、安装Harbor

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

一定要下载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

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:

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

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

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

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

其他使用默认值

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

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

停止Harbor

docker-compose stop

启动Harbor

docker-compose start

5、登录测试

http://192.168.1.79

初始密码:admin/Harbor12345

登录后的页面

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

项目名称:sonarqube-xywg

创建完毕

6、上传镜像

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

vi /etc/docker/daemon.json

加入

{

"insecure-registries" : ["192.168.1.79"]

}

重启Docker生效

systemctl restart docker

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

再次登录试试

docker login 192.168.1.79

开始上传操作

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 镜像信息 新镜像名[:版本号等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

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

执行结果:

进入Harbor的项目中查看

查看已上传的sonarqube镜像

PS:Harbor有分级概念:

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

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

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

镜像 项目 版本 仓库 文件 标签 检查 登录 注释 配置 容器 目录 参数 用户 不同 主机 名称 命令 密码 错误 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 京东的软件开发岗 国家倡导扶持网络安全 剑三服务器哪种好 浙江监控服务器机柜云主机 netstat查看数据库连接数 中国书协会员数据库 关于疫情网络安全问题的看法 徐州数据网络技术服务电话 以下哪个命令用于重新连接数据库 查服务器的内存命令 网络安全设施制度 京东抢货软件开发 win10网络安全级别 tcag数据库 光遇服务器和别的服务器对比视频 与万方数据库相似的网站 怀柔区专业软件开发平台 web服务器安全部署文档 6000元左右的软件开发笔记本 杭州程序软件开发哪家可靠 部落冲突苹果服务器找不到了 橙子服务器更新慢 高级数据库技术特点 数据库应用对商科学生有什么作用 北京 服务器交换机销售好做吗 计算机网络技术到底学什么 网络安全课 抵制盗版出版物 科技苑一颗蛋遇上互联网 腾讯软件开发中心在哪里 张娟电子商务网络安全技术探究
0