• harbor安装


    Harbor

    • 在生产运维环境中,伴随镜像和项目越来越多,单台docker主机无法支撑那么多业务,而Harbor是一个企业级镜像仓库Harbor,将作为我们容器云平台的镜像仓库中心。

    • 官网直通车

    1.Harbor功能

    • 基于角色访问控制(RBAC)

      在企业中,通常有不同的开发团队负责不同的项目,镜像像代码一样,每个人角色不同需求也不同,因此就需要访问权限控制,根据角色分配相应的权限。
      例如,开发人员需要对项目构建这就用到读写权限(push/pull),测试人员只需要读权限(pull),运维一般管理镜像仓库,具备权限分配能力,项目经理具有所有权限。

    • 镜像复制

      可以将仓库中的镜像同步到远程的Harbor,类似于MySQL主从同步功能。

    • LDAP

      Harbor支持LDAP认证,可以很轻易接入已有的LDAP。

    • 镜像删除和空间回收

      Harbor支持在Web删除镜像,回收无用的镜像,释放磁盘空间。

    • 图形页面管理

      用户很方面搜索镜像及项目管理。

    • 审计

      对仓库的所有操作都有记录。

    • REST API

      完整的API,方便与外部集成。

    2.Harbor组件组成

    组件 功能
    harbor-adminserver 配置管理中心
    harbor-db Mysql数据库
    harbor-jobservice 负责镜像复制
    harbor-log 记录操作日志
    harbor-ui Web管理页面和API
    nginx 前端代理,负责前端页面和镜像上传/下载转发
    redis 会话
    registry 镜像存储

    3.环境准备工作

    • 安装docker
    yum install docker 
    
    • docker加速
    vi /etc/docker/daemon.json # 添加如下内容
    
    {
        "registry-mirrors": ["https://registry.docker-cn.com"],
    }
    

    4.安装Harbor

    • 这里使用离线方式安装,安装版本是harbor-offline-installer-v1.7.5.tgz

      # 解压操作
      tar zxvf harbor-offline-installer-v1.7.5.tgz
      # cd harbor
      cd harbor
      # 编辑harbor.cfg
      vi harbor.cfg
      	#配置
      	hostname=10.0.0.132 # 这里可以输入你的域名
      	ui_url_protocol=http # 这是如果设置https就要自签名
      	harbor_admin_password = Harbor12345
      	# 如果配置https配置如下2个参数
      	ssl_cert = ./ssl/[你的域名].crt
      	ssl_cert_key = ./ssl/[你的域名].key
      # 执行生成配置文件
      ./prepare
      # 安装并启动Harbor
      ./install.sh
      
    • 查看运行状态

    • 如果有state为非up状态查看如下目录日志

      ls /var/log/harbor/
      
    • 登录web界面

      账号:admin  
      
      密码:Harbor12345
      
    • 创建一个用户

    • 进入library项目,将刚才用户加入进去

    5.推送镜像

    • 以hello-world为例我事先拉取一个镜像
    docker puill hello-world
    
    • 标记目标镜像
    docker image tag hello-world 10.0.0.132/library/hello-world
    
    # 这里注意:
    	docker image tag [tag名] [镜像中心域名]/[项目名称]/[镜像名称]:[版本]
    	示例:
    		docker image tag hello-world registry.ct.com/library/hello-world:latest
    
    • push上传
    docker push 10.0.0.132/library/hello-world
    The push refers to a repository [10.0.0.132/library/hello-world]
    Get https://10.0.0.132/v1/_ping: dial tcp 10.0.0.132:443: connect: connection refused
    # 此时推送消息报错,原因没有登录
    
    • 先登录
    [root@bogon harbor]# docker login 10.0.0.132
    Username: xujunkai
    Password: Harbor12345
    Error response from daemon: Get https://10.0.0.132/v1/users/: dial tcp 10.0.0.132:443: connect: connection refused
    
    • 又报错,原因是Docker从1.3.X之后的docker registry交互使用HTTPS.但是我们搭建镜像默认使用HTTP服务,所以报错。

    • 修改配置,--insecure-registry [harbor主机IP]跳过https验证

      vim /lib/systemd/system/docker.service
      

    • 重启

    systemctl daemon-reload && systemctl restart docker
    
    • 重新登录,成功
    [root@bogon harbor]# docker login 10.0.0.132
    Username: xujunkai
    Password: 
    Login Succeeded
    
    • 推送镜像,成功
    The push refers to a repository [10.0.0.132/library/hello-world]
    f22b99068db9: Pushed 
    latest: digest: sha256:1b26826f602946860c279fce658f31050cff2c596583af237d971f4629b57792 size: 525
    

    6.下载镜像

    • 由于搭建的Harbor是HTTP服务, 而Docker-cli默认HTTPS所以,需要配置harbor信任
    vi /etc/docker/daemon.json # 添加如下内容
    
    {
        "registry-mirrors": ["https://registry.docker-cn.com"],
        "insecure-registries": ["10.0.0.132"]
    }
    
    • 拉取harbor镜像
    docker pull 10.0.0.132/library/hello-world
    

    7.其他操作

    # 必须要在harbor目录下
    # 停止harbor
    docker-compose stop
    # 启动容器
    docker-compose up -d
    

    8.HTTPS自签证书

    • 操作方式:
    • 这里你的域名指的是:rg.harbor.com
    cd harbor
    mkdir ssl
    cd ssl
    # 生成CA根的证书
    openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt
    Country Name: CN
    Common Name: xujunkai
    其他可以不输入
    
    
    # 指定仓库域名
    openssl req -newkey rsa:4096 -nodes -sha256 -keyout [你的域名].key -out [你的域名].csr
    Country Name: CN
    Common Name: 你的域名
    # 其他可以不输入
    
    
    
    # 颁发证书
    openssl x509 -req -days 365 -in [你的域名].csr -CA ca.crt -CAkey ca.key -CAcreateserial -out [你的域名].crt
    
    openssl x509 -req -days 365 -in rg.harbor.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out rg.harbor.com.crt
    
    • 此时会生成如下2个文件
    [你的域名].crt  [你的域名].key
    
  • 相关阅读:
    windows服务器下安装APC
    (经验)在CSS中定义超链接样式a:link、a:visited、a:hover、a:active的顺序
    网站访问计数器
    网站计数器代码(jsp版本)
    .NET2.0隐形的翅膀,正则表达式搜魂者
    PHP中array数组教程
    [Python] py2exe先知其然
    [Python] Ubuntu12.04LTS
    [Python] 中文
    [linux] is not in the sudoers file
  • 原文地址:https://www.cnblogs.com/xujunkai/p/14675537.html
Copyright © 2020-2023  润新知