• Harbor镜像仓库安装及使用


    Harbor(港口,港湾)是一个用于存储和分发Docker镜像的企业级Registry服务器。

    除了Harbor这个私有镜像仓库之外,还有Docker官方提供的Registry。相对Registry,Harbor具有很 多优势:

    1. 提供分层传输机制,优化网络传输 Docker镜像是是分层的,而如果每次传输都使用全量文件(所以 用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定 传输的对象。

    2. 提供WEB界面,优化用户体验 只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界 面可以支持登陆、搜索功能,包括区分公有、私有镜像。

    3. 支持水平扩展集群 当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分 解。

    4. 良好的安全机制 企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限, 具有更好的安全性。

    先说坑:

      1.python需2.7+   升级python并且修改/usr/bin下的pip文件,将头部python2改成python3.7(我升级的python为3.7)

      2.安装harbor会出现Need to install docker-compose(1.18.0+) by yourself first and run this script again.

        docker-compose版本需要1.18.0+

        使用我下面的命令安装docker-compose后,运行docker-compose会报指令不存在

        我是去github下载了高版本的docker-compose文件放入/usr/local/bin下。地址:https://github.com/docker/compose/releases

    Harbor安装

    1.安装Docker并启动Docker

    2.安装docker-compose

      sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/dockercompose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

    3.给docker-compose添加执行权限

           sudo chmod +x /usr/local/bin/docker-compose

    4.查看docker-compose是否安装成功

      docker-compose -version

      如果显示docker-compose指令不存在,可以尝试手动下载docker-compose,地址:https://www.cnblogs.com/cw828/p/11970225.html   将docker-compose文件放入/usr/local/bin中,再次执行docker-compose -version

    5.下载Harbor的压缩包(版本:v1.9.2)

    6.上传压缩包到linux,并解压

      tar -xzf harbor-offline-installer-v1.9.2.tgz

      mkdir /opt/harbor

      mv harbor/* /opt/harbor

      cd /opt/harbor

    7.修改Harbor的配置

      vi harbor.yml

    8.修改hostname和port

      hostname: 192.168.66.102

      port: 85

    9.安装Harbor

      ./prepare

      ./install.sh

    10.启动Har

     docker-compose up -d 启动

     docker-compose stop 停止

     docker-compose restart 重新启动

    11.访问Harbor

      ip:85

      默认账户密码:admin/Harbor12345

    12.在Harbor创建用户和项目

    公开项目:所有用户都可以访问,通常存放公共的镜像,默认有一个library公开项目。

    私有项目:只有授权用户才可以访问,通常存放项目本身的镜像。

     13.创建用户

    14.给私有项目分配用户

    访客:对于指定项目拥有只读权限

    开发人员:对于指定项目拥有读写权限

    维护人员:对于指定项目拥有读写权限,创建 Webhooks

    项目管理员:除了读写权限,同时拥有用户管理/镜像扫描等管理权限

    15(其他服务器)把镜像上传到Harbor

      1)给镜像打上标签

        docker tag zgj:v1 xxxxxx(HarborIP地址):85/zgj/zgj:v1

      2)推送镜像

        docker push xxxxxx(HarborIP地址):85/zgj/zgj:v1

        报错:The push refers to repository [xxxxxx:85/tensquare/eureka] Get https://xxxxxxx:85/v2/: http: server gave HTTP response to HTTPS client

        这时会出现以上报错,是因为Docker没有把Harbor加入信任列表中

      3)把Harbor地址加入到Docker信任列表

        vi /etc/docker/daemon.json

        {

         "registry-mirrors": ["xxxxxx"],//阿里镜像地址

        "insecure-registries": ["xxxxxx(HarborIP地址):85"]

        }

        重启docker!!!

      4)再次执行推送命令,会提示权限不足

        denied: requested access to the resource is denied

        需要先登录Harbor,再推送镜像

      5)登录Harbor

        docker login -u 用户名 -p 密码 xxxxxx(HarborIP地址):85

        用户名密码为刚刚设置的harbor用户

        Login Succeeded!!!!!

    16.(其他服务器)从Harbor上下载镜像

      1)安装Docker,并启动Docker

      2)修改Docker配置

        vi /etc/docker/daemon.json

        {

         "registry-mirrors": ["xxxxxx"],//阿里镜像地址

        "insecure-registries": ["xxxxxx(HarborIP地址):85"]

        }

        重启docker!!!

      3)先登录,再从Harbor下载镜像

        docker login -u 用户名 -p 密码 xxxxxx(HarborIP地址):85

        docker pull xxxxxx(HarborIP地址):85/zgj/zgj:v1

  • 相关阅读:
    [国家集训队]整数的lqp拆分
    来一波全套向量运算(C++)
    天哪又要搬家啦qvq
    利用输入输出流复制文件
    系统会随机给你两个日期(yyyy-MM-dd),求出两个日期的具体相差天数
    mysql中的连接操作
    java面试题集锦
    Java关于Math类的三个取整方法
    设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
    MySql5.5安装详细说明
  • 原文地址:https://www.cnblogs.com/cw828/p/14212525.html
Copyright © 2020-2023  润新知