harbor:
  Harbor是构建企业级私有docker镜像的仓库的开源解决方案,它是Docker Registry的更高级封装,它除了提供友好的Web UI界面,角色和用户权限管理,用户操作审计等功能外,它还整合了K8s的插件(Add-ons)仓库,即Helm通过chart方式下载,管理,安装K8s插件,而chartmuseum可以提供存储chart数据的仓库【注:helm就相当于k8s的yum】。另外它还整合了两个开源的安全组件,一个是Notary,另一个是Clair,Notary类似于私有CA中心,而Clair则是容器安全扫描工具,它通过各大厂商提供的CVE漏洞库来获取最新漏洞信息,并扫描用户上传的容器是否存在已知的漏洞信息,这两个安全功能对于企业级私有仓库来说是非常具有意义的。
 补充:
  Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓库 下载所需要的构件(artifact),但这通常不是一个好的做法,你应该在本地架设一个Maven仓库服务器,在代理远程仓库的同时维护本地仓库,以节省带宽和时间,Nexus就可以满足这样的需要。此外,他还提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjs的REST客户端,它占用较少的内存,基于简单文件系统而非数据库。这些优点使其日趋成为最流行的Maven仓库管理器。

     Notary是一个允许任何人信任任意数据集合的项目。Notary项目包括服务器和客户端,用于运行和与可信集合交互。Notary旨在通过让人们轻松发布和验证内容,使互联网更加安全。我们经常依靠TLS来保护我们与Web服务器的通信,这本身就存在缺陷,因为服务器被攻破时可使恶意内容替代合法内容。借助Notary,发布商可以使用保持高度安全的密钥离线签署其内容。一旦发布者准备好内容,他们可以将他们签名的可信集合推送到Notary服务器。消费者通过安全渠道获得了发布者的公钥,然后可以与任何Notary服务器或(不安全)镜像进行通信,仅依靠发布者的密钥来确定接收内容的有效性和完整性。Notary基于TUF项目,一个针对软件分发和更新问题的安全通用设计。

  Clair:
   参考: https://blog.csdn.net/liumiaocn/article/details/76697022
   通过对容器的layer进行扫描,发现漏洞并进行预警,其使用数据是基于Common Vulnerabilities and Exposures数据库(简称CVE), 各Linux发行版一般都有自己的CVE源,而Clair则是与其进行匹配以判断漏洞的存在与否,比如HeartBleed的CVE为:CVE-2014-0160。

  

  目前Clair支持如下数据源:

    

HARBOR:
  这是VMWare公司提供的一个docker私有仓库构建程序,功能非常强大.
    1. 支持多租户签名和认证
    2. 支持安全扫描和风险分析
    3. 这次日志审计
    4. 基于角色的访问控制
    5. 支持可扩展的API和GUI
    6. Image replication between instances
    7. 国际化做的很好(目前仅支持英文和中文)

 Harbor部署:
  1. 从GitHub上下载Harbor的二进制发行包.
  2. 准备必要的环境:
    yum install docker-ce docker-compose

  3. 解压后,先编辑harbor.cfg
    vim harbor.cfg
      hostname = node1.test.com
      ui_url_protocol = http
      max_job_workers = 3    #启动3个处理用户上传下载的进程,若为4核,3个就是最好的。
      admiral_url = NA      #NA:不自定义管理URL
      harbor_admin_password = Harbor12345    #默认的管理员密码

      #默认它会自动创建一个mysql容器,并设置mysql的root密码为root123,
      #注意:从harbor v1.7.5以后使用的数据库默认是postgresql
      db_password = root123
      #若想让其使用外部数据库,可修改下面参数为外部数据库的地址.
      db_host = postgresql

      #若启用了--with-clair时,注意修改clair的数据库密码,还有redis的密码,因为clair需要使用redis。
      clair_db_password = root123

  4. 运行 install.sh ,若需要启用harbor的其它功能,可查看 install.sh --help
    安装完成后,它会提示你访问harbor的地址是多少,你就可以直接在浏览器中访问这个地址了。

  5. 可测试打开harbor,并测试上传镜像。
  5.1 在测试上传镜像时,需要先登录harbor的Web界面,然后创建一个项目,这个项目就相当于公司中不同的项目组,每个项目组分别管理各自的项目镜像,以便后期该项目不需要时,可直接删除该项目。

  5.2 然后到harbor客户端,测试登录harbor仓库,并尝试上传镜像
  5.2.1 因为这里使用了非安全的HTTP,因此需要修改docker的启动参数
    vim /usr/lib/systemd/system/docker.service
      ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --selinux-enabled=false --insecure-registry 192.168.10.154
    #若没有启用SELinux可设置不启用它
    #--insecure-registry 即指定一个非安全的仓库,这里指定内网harbor地址为192.168.10.154
    # 若有多个可重复--insecure-registry

  5.2.2 测试上传镜像
    ~]# docker login http://192.168.10.154
    Authenticating with existing credentials...
    WARNING! Your password will be stored unencrypted in /root/.docker/config.json. #这里需要注意: 登录成功后,用户名密码会保存到config.json中。
    Configure a credential helper to remove this warning. See
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store

    Login Succeeded

    ~]# docker push 192.168.10.154/test1/nginx-alpine:v1    #这样就可以上传镜像到harbor上了。

  6. 可自行查看 docker-compose.yml, install.sh 实际执行的docker-compose命令.
    docker-compose   
     #命令在运行时,会自动在当前目录下,找docker-compose.yml配置文件,若找到则安装里面的定义
     #来决定到哪里去找镜像,先启动那个容器,启动镜像需要挂载什么卷等。

    在配置Harbor时,若出现问题,可结合/var/log/harbor中的日志文件来查看问题.
    我通常会这样查看:
      tail -f /var/log/harbor/*.log

  Harbor配置HTTPS:
    1. 修改 harbor.cfg
      hostname = harbor.zcf.com
      ui_url_protocol = https
      ssl_cert = /data/docker/certs/harbor.zcf.com.crt
      ssl_cert_key = /data/docker/certs/harbor.zcf.com.key
      harbor_admin_password = adminpass

    2. 创建证书,并放到上面定义的目录中
      测试使用,可使用我用shell写的证书制作工具:
       https://github.com/zhang75656/shell-tools/blob/master/gencret.sh
       chmod +x  gencret.sh
       ./gencret.sh  --help     #可查看使用帮助.但前提是必须安装openssl
    3. 重新执行 ./install.sh 即可,这样harbor服务端就可以工作了.

  Harbor 客户端配置:
    1. 在docker配置目录下创建证书目录,
      #注意: 证书目录是存放harbor服务器的证书文件.
      # docker login harbor.zcf.com
      # 当执行上面命令登录harbor时,默认docker会到/etc/docker/certs.d/下去找 harbor.zcf.com这个目录,看其下面是否有证书可用。
      # 所以,需要将harbor服务器上的证书scp过来,放到docker客户端的这个目录中。
     mkdir /etc/docker/certs.d/harbor.zcf.com
 

Harbor通过Systemd管理时,所需要的systemd脚本参考:

[Unit]
Description=BigDisk docker-compose container starter
After=docker.service network-online.target
Requires=docker.service network-online.target

[Service]
WorkingDirectory=/[path_to_harbor]      #这里需要修改为Harbor的安装目录.
Type=oneshot
RemainAfterExit=yes

ExecStart=/usr/bin/docker-compose up -d    #这里需要确认,docker-compose的路径是否与自己的系统的路径一致.
ExecStop=/usr/local/bin/docker-compose down
ExecReload=/usr/bin/docker-compose up -d

[Install]
WantedBy=multi-user.target

Harbor基础的更多相关文章

  1. 私有镜像仓库Harbor基础介绍与部署

    企业级私有镜像仓库Harbor 一:介绍 Harbor,是一个英文单词,意思是港湾,港湾是干什么的呢,就是停放货物的,而货物呢,是装在集装箱中的,说到集装箱,就不得不提到Docker容器,因为dock ...

  2. Harbor高可用

    项目需求: 实现Harbor的HTTPS高可用,由于Harbor 服务器配置不高,直接做HTTPS对上传下载镜像时,若docker客户端多时,会非常慢,为了提高harbor的效率,采用以下方式来解决. ...

  3. Citrix Netscaler版本管理和选择

    Citrix Netscaler版本管理和选择 来源 http://blog.51cto.com/caojin/1898164 随着Citrix Netscaler的快速发展,有很多人在维护设备时经常 ...

  4. Docker harbor 安装和基础操作

    目录 简介 离线安装 配置文件 安装 查看 访问测试 及 简单操作 创建一个用户 创建一个测试仓库 创建测试仓库 测试上传和下载镜像 上传 下载镜像测试 简介 Docker容器应用的开发和运行离不开可 ...

  5. Teradata基础教程中的数据库试验环境脚本

    Teradata基础教程中的数据库表: Customer:  客户信息表 Location:  位置信息表 Employee:  雇员信息表 Job:  工作信息表 Department:  部门表 ...

  6. docker 私有仓库之Harbor搭建与使用

    Harbor搭建 下载Harbor: http://harbor.orientsoft.cn/ #下载offline版本 配置Harbor tar xvf harbor-online-installe ...

  7. docker 系列 - 企业级私有镜像仓库Harbor部署(转载)

     本文转载自 搜云库 的文章 https://www.jianshu.com/p/7d76850de03f  , 感谢作者 3.png 上一篇文章搭建了一个具有基础功能,权限认证.TLS 的私有仓库, ...

  8. [Docker]Docker拉取,上传镜像到Harbor仓库

    需求 因为项目的需求,需要制作一个基于tomcat的镜像.那么前提就是,需要有tomcat的基础镜像. 怎么做 我的思路跑偏了,本来以为是需要将tomcat下载下来,然后通过docker命令,让它成为 ...

  9. tomcat8_java1.8 基础镜像

    需要解决的越来越多, 基础镜像中 添加 cronolog功能,用于切割catalina.out 日志. 思路是: cephfs 挂载在node节点, crontab 删除 几天的tomcaat 日志. ...

随机推荐

  1. Oracle For Linux 恢复日记 霆智X8III

    公司最近的客户需要在LINUX系统中做数据迁移,备份出来的内容数据库物理文件,回档日志和SpfileXXXX 客户用的是北京霆智的X8备份阵列,X8与数据库服务器都放在IDC机所,IDC机房与客户之间 ...

  2. C# Newtonsoft.Json 你必须知道的一些用法

    最近在做接口开发,对方团队开发了一个Web API 的接口,传输数据的格式是 JSON.当时看到这个东西,感觉很简单,也没想什么,没用多久就完成了我的功能,我完成的功能很简单,就是获取数据,然后把数据 ...

  3. 2019 京东java面试笔试总结 (含面试题解析)

       本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.京东等公司offer,岗位是Java后端开发,因为发展原因最终选择去了京东,入职一年时间了,也成为了面试官, ...

  4. JavaScript设计模式与开发实践随笔(一)

    编程语言按照数据类型大体可以分为两类,一类是静态类型语言,另一类是动态类型语言. 静态类型语言在编译时便已确定变量的类型,而动态类型语言的变量类型要到程序运行的时 候,待变量被赋予某个值之后,才会具有 ...

  5. 输入url之后经历什么?

    一.浏览器查找输入域名的IP地址(拿到 IP) 1.查找浏览器缓存(浏览器一般会缓存DNS记录一段时间,一般为2-30分钟). 2.查找系统缓存(即hosts文件,有没有对应的IP) 3.以上都没有的 ...

  6. 13、vue如何解决跨域问题

    开发环境:配置config文件夹中index.js文件: proxyTable: { '/api': { target: 'http://10.10.1.242:8245',//后端地址 // sec ...

  7. 面试题:什么叫B*树

    B*-tree是B+-tree的变体,在B+树的基础上(所有的叶子结点中包含了全部关键字的信息,及指向含有这些关键字记录的指针),B*树中非根和非叶子结点再增加指向兄弟的指针:

  8. 【Mysql】数据库为啥会出现_encrypt和_warning成对的表

    这是因为MySQL数据库的勒索病毒 可能是你数据库的密码太简单或者没有设置密码导致数据库被攻击 详情请参考: https://www.secpulse.com/archives/112351.html

  9. [2019.05.09]Linux 学习笔记(3)

    最近的心得: CLI真好用,GUI就是渣渣 1. Bash 里面的命令是可以起别名的,起一个别名的方法是 alias [Alias]=[command] command可以是任意长的别名,比如 ali ...

  10. php适配器模式(adapter pattern)

    下午陪家人和小孩,晚上练起来. <?php /* The adapter pattern allows the interface of an existing class to be used ...