• Docker镜像仓库Harbor1.7.0搭建及配置


    一、harbor简介

    Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。
    特征:
     1 云本机注册表:Harbour 支持容器映像和Helm图表,可用作云本机环境(如容器运行时和业务流程平台)的注册表。
     2 基于角色的访问控制:用户和存储库通过“项目”进行组织,用户可以对项目下的图像拥有不同的权限。
     3 基于策略的映像复制:可以基于具有多个过滤器(存储库,标记和标签)的策略在多个注册表实例之间复制(同步)映像。如果遇到任何错误,Harbor将自动重试进行复制。非常适合负载平衡,高可用性,多数据中心,混合和多云场景。
     4 漏洞扫描:Harbor定期扫描图像并警告用户漏洞。
     5 LDAP / AD支持:Harbor与现有企业LDAP / AD集成以进行用户身份验证和管理,并支持将LDAP组导入Harbor并为其分配适当的项目角色。
     6 图像删除和垃圾收集:可以删除图像,并可以回收它们的空间。
     7 公证:可以确保图像的真实性。
     8 图形用户门户:用户可以轻松浏览,搜索存储库和管理项目。
     9 审计:跟踪存储库的所有操作。
    10 RESTful API:适用于大多数管理操作的RESTful API,易于与外部系统集成。
    11 易于部署:提供在线和离线安装程序。 

    官方文档:https://goharbor.io/docs/

    github用户手册:https://github.com/goharbor/harbor/blob/master/docs/user_guide.md

    二、当前安装Harbor主机环境及安装要求

    主机环境:
    OS: CentOS Linux release 7.3.1611 (Core)
    mem: 2GB
    python:2.7.5
    Base&EPEL:aliyun
    硬件要求
    资源容量描述
    CPU 最小2 CPU 4 CPU是首选
    内存 最小4GB 8GB是首选
    磁盘 最小40GB 160GB是首选
    软件要求
    软件描述
    Python 2.7或更高版本 请注意,您可能必须在Linux发行版(Gentoo,Arch)上安装Python,默认情况下不安装Python解释器
    Docker引擎 版本1.10或更高版本 有关安装说明,请参阅:https//docs.docker.com/engine/installation/
    Docker Compose 版本1.6.0或更高版本 有关安装说明,请参阅:https//docs.docker.com/compose/install/
    OpenSSL 建议最新的 为Harbor生成证书和密钥
    网络端口要求
    端口协议描述
    443 HTTPS Harbor门户和核心API将接受此端口上的https协议请求
    4443 HTTPS 只有在连接到Dock的Docker Content Trust服务启用认证时才需要
    80 HTTP Harbor端口和核心API将接受此端口上的http协议请求

    根据版本的不同,可能环境要求各不相同,具体可以参官方文档:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md

     三、安装Harbor

    1.安装docker
    [root@localhost ~]#  wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -P /etc/yum.repos.d/
    [root@localhost ~]# yum clean all  && yum makecache fast
    [root@localhost ~]# yum install docker-ce -y 
    [root@localhost ~]#systemctl enable docker && systemctl restart docker
    2.安装Docker-compose

    Docker-compose有两种安装方式,分别为下载源码和pip安装

    下载源码安装(可以指定版本):

    1、下载指定版本的docker-compose
      [root@localhost ~]# curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    2、对二进制文件赋可执行权限
      [root@localhost ~]# chmod +x /usr/local/bin/docker-compose
    3、测试下docker-compose是否安装成功
      [root@localhost ~]#docker-compose --version

    pip安装:

    [root@localhost ~]# yum install python-pip -y
    [root@localhost ~]# pip install --upgrade pip
    [root@localhost ~]# pip install docker-compose #默认最新版本,可以使用 docker-compose==version指定安装版本
    [root@localhost ~]# docker-compose -version
    docker-compose version 1.23.2, build 1110ad0
    3.安装Harbor
    harbor有两个版本,分别为offline(离线)online(在线),离线的安装包比较大,后续安装会相对快一点,在线的安装包比较下,但是后续安装会比较慢,这里我们选择离线安装

    在指定版本的Download Binary处现在对应的安装包,复制链接

    [root@localhost ~]# wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.0.tgz #如果无法科*学*上*网,可以从我的网盘中下载(链接: https://pan.baidu.com/s/1RnULNRY6ExulTI8hzejZQw 提取码: b81p)
    [root@localhost ~]# tar xf harbor-offline-installer-v1.7.0.tgz 
    [root@localhost ~]# cd harbor
    4.配置Harbor

    解压缩之后,目录下回生成harbor.conf文件,该文件就是Harbor的配置文件。

     1 ## Configuration file of Harbor
     2 
     3 # hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhost
     4 hostname = 172.33.16.1   #需要根据实际情况手动修改
     5 
     6 # 访问协议,默认是http,也可以设置https,如果设置https,则nginx ssl需要设置on
     7 ui_url_protocol = http
     8 
     9 # mysql数据库root用户默认密码root123,实际使用时修改下
    10 db_password = root123
    11 
    12 max_job_workers = 3 
    13 customize_crt = on
    14 ssl_cert = /data/cert/server.crt
    15 ssl_cert_key = /data/cert/server.key
    16 secretkey_path = /data
    17 admiral_url = NA
    18 
    19 # 邮件设置,发送重置密码邮件时使用
    20 email_identity = 
    21 email_server = smtp.mydomain.com
    22 email_server_port = 25
    23 email_username = sample_admin@mydomain.com
    24 email_password = abc
    25 email_from = admin <sample_admin@mydomain.com>
    26 email_ssl = false
    27 
    28 # 启动Harbor后,管理员UI登录的密码,默认是Harbor12345
    29 harbor_admin_password = Harbor12345
    30 
    31 # 认证方式,这里支持多种认证方式,如LADP、本次存储、数据库认证。默认是db_auth,mysql数据库认证
    32 auth_mode = db_auth
    33 
    34 # LDAP认证时配置项
    35 #ldap_url = ldaps://ldap.mydomain.com
    36 #ldap_searchdn = uid=searchuser,ou=people,dc=mydomain,dc=com
    37 #ldap_search_pwd = password
    38 #ldap_basedn = ou=people,dc=mydomain,dc=com
    39 #ldap_filter = (objectClass=person)
    40 #ldap_uid = uid 
    41 #ldap_scope = 3 
    42 #ldap_timeout = 5
    43 
    44 # 是否开启自注册
    45 self_registration = on
    46 
    47 # Token有效时间,默认30分钟
    48 token_expiration = 30
    49 
    50 # 用户创建项目权限控制,默认是everyone(所有人),也可以设置为adminonly(只能管理员)
    51 project_creation_restriction = everyone
    52 
    53 verify_remote_cert = on
    5.启动harbor

    修改完配置文件后,在的当前目录执行./install.sh,Harbor服务就会根据当期目录下的docker-compose.yml开始下载依赖的镜像,检测并按照顺序依次启动各个服务

    [root@localhost harbor]# ./install.sh 
    ......
    [Step 4]: starting Harbor ...
    Creating network "harbor_harbor" with the default driver
    Creating harbor-log ... done
    Creating registry           ... done
    Creating registryctl        ... done
    Creating harbor-adminserver ... done
    Creating harbor-db          ... done
    Creating redis              ... done
    Creating harbor-core        ... done
    Creating harbor-portal      ... done
    Creating harbor-jobservice  ... done
    Creating nginx              ... done
    
    ✔ ----Harbor has been installed and started successfully.----
    
    Now you should be able to visit the admin portal at http://172.33.16.1. 
    For more details, please visit https://github.com/goharbor/harbor .

    #后续可以使用docker-compose [start|stop] 命令在docker-compose.yml文件所在目录下来关闭和启动harbor

    访问harbor,地址为我们设置的hostname,端口默认为80

    点击登录

    默认安装后会自动创建一个名称为library的项目,且访问级别为公开(表示任何人可读,即任何人都可以下载该项目中的镜像)

     6.命令行登录

    harbor也可以在命令行下进行登录,登录后可以将本地的镜像上传到harbor,也可以下载用户拥有权限项目下的镜像,需要注意的是上传镜像的格式(docker tag  image:tag harbor-address/project name/image:tag),例如docker tag nginx:alpine 172.33.16.1/library/nginx:latest

    [root@localhost harbor]# docker login 172.33.16.1  
    Username: admin
    Password: 
    Error response from daemon: Get https://172.33.16.1/v2/: dial tcp 172.33.16.1:443: connect: connection refused
    

    第一次登录报错了,报这个错误可能有如下2个原因:

    1、是端口错了!
    2、未在docker启动文件中添加--insecure-registry信任关系!
    大多数这个错误是第2个原因,因为你没有添加信任关系的话,docker默认使用的是https协议,所以端口不对(443),会报连接拒绝这个错误;
    或者提示你 "服务器给HTTPS端的是HTTP响应" 这个错误,因为你没添加端口信任,服务器认为这是默认的https访问,返回的却是http数据!

    解决方法:

    正确的添加信任关系包括端口号:
    注:
    记住,这是harbor镜像仓库,而不是单纯的registry容器仓库!
    如果你用的是默认的80端口,则不需要加,或者加上80也行,而不是5000这个端口!
    [root@localhost harbor]# tee /etc/docker/daemon.json <<-'EOF'
    > {
    >   "insecure-registries": [
    >     "172.33.16.1"    #harbor服务主机ip,如果不是80端口,一定要把端口同时添加进去
    >   ]
    > }
    > EOF

    再次登录

    [root@localhost harbor]# systemctl daemon-reload
    [root@localhost harbor]# systemctl restart docker
     [root@localhost harbor]# docker login 172.33.16.1
    Username: admin
    Password: 
    WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
    Configure a credential helper to remove this warning. See
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    
    Login Succeeded

    好了,harbor安装完成,关于harbor的使用,由于篇幅有限,请参考harbor用户指南,链接如下:https://github.com/goharbor/harbor/blob/master/docs/user_guide.md

  • 相关阅读:
    378. Kth Smallest Element in a Sorted Matrix
    372. Super Pow
    357. Count Numbers with Unique Digits
    345. Reverse Vowels of a String
    343. Integer Break
    347. Top K Frequent Elements
    344. Reverse String
    338. Counting Bits
    326. Power of Three
    python练习
  • 原文地址:https://www.cnblogs.com/panwenbin-logs/p/10218099.html
Copyright © 2020-2023  润新知