Harbor仓库部署


Harbor 仓库介绍

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

Harbor核心组件解释

Proxy:他是一个nginx的前端代理,代理Harbor的registry,UI, token等服务。
db:负责储存用户权限、审计日志、Dockerimage分组信息等数据。
UI:提供图形化界面,帮助用户管理registry上的镜像, 并对用户进行授权。
jobsevice:jobsevice是负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log。
Adminserver:是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候回需要加载adminserver的配置。
Registry:镜像仓库,负责存储镜像文件。

Harbor和Registry的比较

Harbor和Registry都是Docker的镜像仓库,但是Harbor作为更多企业的选择,是因为相比较于Regisrty来说,它具有很多的优势。

  1. 提供分层传输机制,优化网络传输
    Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象。
  2. 提供WEB界面,优化用户体验
    只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像。
  3. 支持水平扩展集群
    当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解。
  4. 良好的安全机制
    企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限,具有更好的安全性。
  5. Harbor提供了基于角色的访问控制机制,并通过项目来对镜像进行组织和访问权限的控制。kubernetes中通过namespace来对资源进行隔离,在企业级应用场景中,通过将两者进行结合可以有效将kubernetes使用的镜像资源进行管理和访问控制,增强镜像使用的安全性。尤其是在多租户场景下,可以通过租户、namespace和项目相结合的方式来实现对多租户镜像资源的管理和访问控制。

安装环境

1.docker 版本17.06.0+
2.docker-compose 版本 1.18.0+
3.关闭防火墙,安全性
4.CentOS 7 系统,可联网

一、安装docker步骤

1.添加docker-ce源

cd /etc/yum.repos.d
wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

注意:若无法使用wget下载,可先下载,再上传到Linux相关目录下

2.安装docker

yum -y install docker-ce

3.启动docker

systemctl start docker

4.将docker设置为开机自启

systemctl enable docker

二、安装docker-compse

1. 先安装epel源

yum install -y epel-release

2. 安装docker-compose

yum -y install docker-compose

三、安装harbor仓库

1. 下载harbor离线安装包

  • 创建镜像存放路径

    mkdir -p /mnt/homelab_mfs/homelab_core_data/k8s/harbor

仓库下载地址: https://github.com/goharbor/harbor/releases/

  • 下载离线包

    wget https://github.com/goharbor/harbor/releases/download/v2.3.2/harbor-offline-installer-v2.3.2.tgz

2. 解压harbor

tar xvf harbor-offline-installer-v2.3.2.tgz -C /usr/local/

3. 导入docker镜像

cd /usr/local/harbor
docker image load -i harbor.v2.3.2.tar.gz

4. 修改第harbor.yml配置文件

cd /usr/local/harbor
# 拷贝配置模板
cp harbor.yml.tmpl harbor.yml
vim harbor.yml

主要修改主机名为本机IP

hostname = 10.20.30.40

再注释掉https相关配置即可,其他可根据需要修改!

  • 参考配置

    hostname: 192.168.7.81
    http:
      port: 8080
    harbor_admin_password: Harbor12345
    database:
      password: root123
      max_idle_conns: 100
      max_open_conns: 900
    data_volume: /mnt/homelab_mfs/homelab_core_data/k8s/harbor
    trivy:
      ignore_unfixed: false
      skip_update: false
      insecure: false
    jobservice:
      max_job_workers: 10
    notification:
      webhook_job_max_retry: 10
    chart:
      absolute_url: disabled
    log:
      level: info
      local:
        rotate_count: 50
        rotate_size: 200M
        location: /data1/logs/harbor
    _version: 2.3.0
    proxy:
      http_proxy:
      https_proxy:
      no_proxy:
      components:
        - core
        - jobservice
        - trivy

注意:

  1. 安装v2.x系列,必须先导入镜像,再拷贝harbor.yml.tmpl模板,顺序不能乱,并且直接使用harbor.yml.tmpl模板作为配置文件,只能使用harbor.yml 作为配置文件。
  2. v1.x系列安装没有导入docker镜像这一步,直接修改配置文件harbor.cfg 即可,后面操作一样。

5. 检测harbor

./prepare

6. 安装harbor

./install.sh

7.查看服务器运行的容器

docker ps

8.访问Harbor管理系统

地址: http://10.20.30.40
默认账号: admin
密码: Harbor12345

9.相关命令

  • 后台启动,如果容器不存在根据镜像自动创建
    • docker-compose up -d
  • 停止容器并删除容器
    • docker-compose down -v
  • 启动仓库,容器不存在就无法启动,不会自动创建镜像
    • docker-compose start
  • 停止仓库
    • docker-compose stop

10.创建项目

上传镜像

1. 下载官方tomcat镜像

docker pull tomcat

注意:如下载过慢,可以添加国内仓库:

vim /etc/docker/daemon.json

{
"registry-mirrors": ["https://fskvstob.mirror.aliyuncs.com/"]
}
# 重新加载
systemctl daemon-reload
# 重启docker
systemctl restart docker

2. 给tomcat镜像打标签

docker tag tomcat 192.168.154.133/maven-test01/tomcat:v1

3. 登陆harbor

docker login 192.168.154.133

此时会出现如下报错:

解决方案:

cd /usr/lib/systemd/system
vim docker.service

ExecStart 中间增加

--insecure-registry=192.168.154.133
# 重新加载
systemctl daemon-reload
# 重启docker
systemctl restart docker

4. 再次登录

docker login 192.168.154.133

5. 上传镜像到仓库

docker push 192.168.154.133/maven-test01/tomcat:v1

相关链接

https://blog.51cto.com/u_13760351/2532347


文章作者: NesTeaLin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 NesTeaLin !
  目录