Centos上安装Harbor并使用

harbor的安装与使用

Harbor介绍

容器应用的开发和运行离不开可靠的 镜像管理,并且从安全和效率等方面考虑,部署在私有环境内也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。

官网地址:https://github.com/goharbor/harbor

安装前的准备工作

harbor安装环境

操作系统:centos7.9

服务器配置: 4Gib内存/4vCPU/80G硬盘

网络:NAT模式

准备工作

需要提前部署好docker,为后面harbor的使用准备

本次实验将docker部署在了另一个服务器上,docker的部署步骤详见:
https://blog.csdn.net/weixin_40364776/article/details/103787201

配置机器主机名

bash 复制代码
hostnamectl set-hostname harbor && bash

为Harbor自签发证书

bash 复制代码
mkdir /data/ssl -p

cd /data/ssl/

生成ca证书

生成一个3072位的key(私钥)

bash 复制代码
openssl genrsa -out ca.key 3072

生成一个数字证书ca.pem

  • -new 表示生成一个新的证书请求
  • -x509 表示输出一个X.509证书,而不是一个证书签名请求
  • -days 3650 表示证书的有效期为10年
bash 复制代码
openssl req -new -x509 -days 3650 -key ca.key -out ca.pem

按箭头前的提示填写城市信息即可,没有箭头标注的直接回车

生成harbor域名的证书

生成一个3072位的key(私钥)

bash 复制代码
openssl genrsa -out harbor.key  3072

生成一个证书请求,一会签发证书时需要的

bash 复制代码
openssl req -new -key harbor.key -out harbor.csr

按箭头前的提示填写 城市信息主机名 即可,没有箭头标注的直接回车

签发证书

bash 复制代码
openssl x509 -req -in harbor.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out harbor.pem -days 3650

显示如下,说明证书签发好了

安装Harbor

安装docker

关闭防火墙

bash 复制代码
systemctl stop firewalld && systemctl disable firewalld

关闭iptables防火墙

安装iptables

bash 复制代码
yum install iptables-services -y

禁用iptables

bash 复制代码
service iptables stop && systemctl disable iptables

清空防火墙规则

bash 复制代码
iptables -F

关闭selinux

bash 复制代码
setenforce 0

修改selinux配置文件之后,重启机器,selinux配置才能永久生效

bash 复制代码
reboot -f

配置时间同步

bash 复制代码
yum install -y ntp ntpdate

跟网络时间做同步

bash 复制代码
ntpdate cn.pool.ntp.org

把时间同步做成计划任务

bash 复制代码
crontab -e

写入:

powershell 复制代码
* */1 * * * /usr/sbin/ntpdate   cn.pool.ntp.org

重启crond服务使配置生效

bash 复制代码
systemctl restart crond

配置hosts文件

bash 复制代码
vi /etc/hosts

加 harbor和 docker 的 IP和访问域名信息
(ps. docker是提前在192.168.40.180主机上部署好的)

powershell 复制代码
192.168.40.180 docker
192.168.40.184 harbor

安装基础软件包

bash 复制代码
yum install -y  wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel  python-devel epel-release openssh-server socat  ipvsadm conntrack 

安装docker依赖包

bash 复制代码
yum install -y yum-utils device-mapper-persistent-data lvm2

安装docker-ce

配置docker-ce国内yum源(阿里云)

bash 复制代码
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装docker-ce

bash 复制代码
yum install docker-ce -y

启动docker服务

bash 复制代码
systemctl start docker && systemctl enable docker

systemctl status docker

看到running,表示docker正常运行

查看Docker 版本信息

bash 复制代码
docker version 

开启包转发功能和修改内核参数

内核参数修改:br_netfilter模块用于将桥接流量转发至iptables链,br_netfilter内核参数需要开启转发

bash 复制代码
modprobe br_netfilter
bash 复制代码
cat > /etc/sysctl.d/docker.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

使参数生效

bash 复制代码
 sysctl -p /etc/sysctl.d/docker.conf

配置docker镜像加速器

修改/etc/docker/daemon.json,变成如下:

bash 复制代码
vim /etc/docker/daemon.json
bash 复制代码
{
"registry-mirrors":["https://y8y6vosv.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com"]
}

或者

登录docker服务器上,直接远程拷贝docker服务器上的daemon.json文件到harbor服务器上
(本次实验用的这个方式)

bash 复制代码
scp /etc/docker/daemon.json 192.168.40.184:/etc/docker/

加载配置 并 重启docker

bash 复制代码
systemctl daemon-reload && systemctl restart docker

安装harbor

创建安装目录

bash 复制代码
mkdir /data/install -p

cd /data/install/

把harbor的离线包harbor-offline-installer-v2.3.0-rc3.tgz上传到这个目录

离线包放在了网盘里可自取:

链接: https://pan.baidu.com/s/13ayH_6RVqBZVIUj7GMVp-A?pwd=s6gt

提取码: s6gt

下载harbor离线包的地址: https://github.com/goharbor/harbor/releases/tag/

解压

bash 复制代码
tar zxvf harbor-offline-installer-v2.3.0-rc3.tgz

cd harbor

cp harbor.yml.tmpl harbor.yml

修改配置文件

bash 复制代码
vim harbor.yml
yaml 复制代码
hostname:  harbor  
#修改hostname,跟上面签发的证书域名保持一致
#协议用https
certificate: /data/ssl/harbor.pem
private_key: /data/ssl/harbor.key

邮件和ldap不需要配置,在harbor的web界面可以配置

其他配置采用默认即可,修改之后保存退出

注:harbor默认的账号密码:admin/Harbor12345

安装docker-compose

上传网盘里提供的 docker-compose-Linux-x86_64 文件到 harbor服务器上

bash 复制代码
mv docker-compose-Linux-x86_64.64 /usr/bin/docker-compose
bash 复制代码
chmod +x /usr/bin/docker-compose

注: docker-compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。Docker-Compose的工程配置文件默认为docker-compose.yml,Docker-Compose运行目录下的必要有一个docker-compose.yml。docker-compose可以管理多个docker实例。

安装harbor

需要的离线镜像包 docker-harbor-2-3-0.tar.gz 也在网盘里,上传到harbor服务器上,通过docker load -i 解压

bash 复制代码
docker load -i docker-harbor-2-3-0.tar.gz 
bash 复制代码
cd /data/install/harbor

./install.sh

看到下面内容,说明安装成功

在自己电脑修改hosts文件(实现本地用域名访问harbor)

在hosts文件添加如下一行,然后保存即可

192.168.40.184 harbor

扩展

如何停掉harbor

bash 复制代码
cd /data/install/harbor
bash 复制代码
docker-compose stop 

如何启动harbor

bash 复制代码
cd /data/install/harbor
bash 复制代码
docker-compose start

Harbor 图像化界面使用说明

在浏览器输入:https://harbor

接收风险并继续,出现如下界面,说明访问正常

账号:admin

密码:Harbor12345

输入账号密码出现如下:

所有基础镜像都会放在library里面,这是一个公开的镜像仓库

新建项目->起个项目名字dev(把访问级别公开那个选中,让项目才可以被公开使用)

测试使用harbor私有镜像仓库

打开部署docker的服务器

配置hosts文件

bash 复制代码
vim /etc/hosts

加 harbor和 docker 的信息(ps. docker是提前在192.168.40.180主机上部署好的)

powershell 复制代码
192.168.40.180 docker
192.168.40.184 harbor

修改docker配置

bash 复制代码
vim /etc/docker/daemon.json

配置新增加了一行内容如下:"insecure-registries":"192.168.40.184"

增加的内容表示内网访问harbor的时候走的是 http,192.168.40.184是安装harbor机器的 IP

json 复制代码
{ "registry-mirrors": ["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com"],
  "insecure-registries": ["192.168.40.184","harbor"]
}

修改配置之后使配置生效

bash 复制代码
systemctl daemon-reload && systemctl restart docker

查看docker是否启动成功

bash 复制代码
systemctl status docker

登录harbor

bash 复制代码
docker login 192.168.40.184

Username:admin

Password: Harbor12345

输入账号密码之后看到如下,说明登录成功了

上传本地镜像

实验:把本地tomcat镜像上传到harbor里

把本地tomcat镜像重打标签

bash 复制代码
docker tag tomcat:latest  192.168.40.184/dev/tomcat:v1

把【192.168.40.184/dev/tomcat:v1】上传到harbor里的dev项目下

bash 复制代码
docker push 192.168.40.184/dev/tomcat:v1


从harbor仓库下载镜像

实验:先在docker服务器上删除【tomcat:v1】镜像,从harbor上拉取

bash 复制代码
docker rmi -f 192.168.40.184/dev/tomcat:v1
bash 复制代码
docker pull 192.168.40.184/dev/tomcat:v1
相关推荐
SelectDB1 小时前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
曲幽8 小时前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
XIAOHEZIcode1 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220702 天前
如何搭建本地yum源(上)
运维
武子康2 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
大树885 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠5 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质5 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工5 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Alsn865 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker