2019独角兽企业重金招聘Python工程师标准>>>

1.什么是harbor

简单的说,Harbor 是一个企业级的 Docker Registry,可以实现 images 的私有存储和日志统计权限控制等功能,并支持创建多项目(Harbor 提出的概念),基于官方 Registry V2 实现。

2.1、安装 Docker

执行以下命令安装 Docker

curl -fsSL https://get.docker.io | bash

2.2、安装 docker-compose

默认的 官方文档 安装命令如下 :

curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

经过本人测试,其文件托管在亚马逊上,伟大的防火墙成功阻止下载……

有能力的童鞋可以使用梯子,我已经下载好了一个点击下载 ;下载后直接 cp 到/usr/local/bin 下并给与可执行权限即可。

3.搭建 Harbor

3.1、克隆源码

git clone https://github.com/vmware/harbor

3.2、修改配置

cd harbor/Deploy/
vim harbor.cfg

配置样例如下 :

## Configuration file of Harbor#The IP address or hostname to access admin UI and registry service.
#DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
# 指定 hostname,一般为IP,或者域名,用于登录 Web UI 界面
hostname = 10.211.55.17#The protocol for accessing the UI and token/notification service, by default it is http.
#It can be set to https if ssl is enabled on nginx.
# URL 访问方式,SSL 需要配置 nginx
ui_url_protocol = http#Email account settings for sending out password resetting emails.
# 邮件相关信息配置,如忘记密码发送邮件
email_server = smtp.xxxxxx.com
email_server_port = 465
email_username = reg@mritd.me
email_password = xxxxxx
email_from = docker <reg@mritd.me>
email_ssl = true##The password of Harbor admin, change this before any production use.
# 默认的 Harbor 的管理员密码,管理员用户名默认 admin
harbor_admin_password = Harbor12345##By default the auth mode is db_auth, i.e. the credentials are stored in a local database.
#Set it to ldap_auth if you want to verify a user's credentials against an LDAP server.
# 指定 Harbor 的权限验证方式,Harbor 支持本地的 mysql 数据存储密码,同时也支持 LDAP
auth_mode = db_auth#The url for an ldap endpoint.
# 如果采用了 LDAP,此处填写 LDAP 地址
ldap_url = ldaps://ldap.mydomain.com#The basedn template to look up a user in LDAP and verify the user's password.
# LADP 验证密码的方式(我特么没用过这么高级的玩意)
ldap_basedn = uid=%s,ou=people,dc=mydomain,dc=com#The password for the root user of mysql db, change this before any production use.
# mysql 数据库 root 账户密码
db_password = root123#Turn on or off the self-registration feature
# 是否允许开放注册
self_registration = on#Turn on or off the customize your certicate
# 允许自签名证书
customize_crt = on#fill in your certicate message
# 自签名证书信息
crt_country = CN
crt_state = State
crt_location = CN
crt_organization = mritd
crt_organizationalunit = mritd
crt_commonname = mritd.me
crt_email = reg.mritd.me
#####

3.3、生成相关配置

cd harbor/Deploy/
./prepare

3.4、编译 image 并启动

cd harbor/Deploy/
docker-compose up -d

3.5、启动后相关容器

正常启动成功后会有 5 个 Contianer :

  • Proxy : 由Nginx 服务器构成的反向代理
  • Registry : 由Docker官方的开源registry 镜像构成的容器实例
  • UI : 即架构中的core services, 构成此容器的代码是Harbor项目的主体
  • Mysql : 由官方MySql镜像构成的数据库容器
  • Log : 运行着rsyslogd的容器,通过log-driver的形式收集其他容器的日志

这几个 Contianer 通过 Docker link 的形式连接在一起,在容器之间通过容器名字互相访问。对终端用户而言,只需要暴露 proxy(即Nginx)的服务端口

4.访问 Web UI 并测试

4.1、主页

默认的访问地址即为 harbor.cfg 中 hostname 地址,直接访问即可,如下

如果 harbor.cfg 中 self_registration 属性设置为 off ,那么普通用户将无法自己实现注册,只能由管理员创建用户,主页右上角的注册按钮也会消失。

4.2、登录

Harbor 默认管理员用户为 admin ,密码在 harbor.cfg 中设置过,默认的是Harbor12345 ,可直接登陆

4.3、创建私有项目

Harbor 有一个项目的概念,项目名可以理解为 Docker Hub 的用户名,其下可以后很多 images,Harbor 的项目必须登录后方可 push,公有项目和私有项目的区别是对其他用户是否可见

4.4、push 镜像

4.4.1、设置 http 仓库地址

由于采用了默认的 http 方式连接,而 Docker 认为这是不安全的,所以在 push 之前需要调整一下 docker 配置,修改/lib/systemd/system/docker.service文件,添加--insecure-registry 172.16.80.182,重启docker daemon 和service
(命令:systemctl daemon-reload 和 systemctl restart docker.service)。

ExecStart=/usr/bin/docker daemon -H fd:// --insecure-registry 172.16.81.99

其中 IP 地址要指向 harbor.cfg 中的 hostname ,然后执行 docker-compose stop 停掉所有 Contianer,再执行 service docker restart 重启 Dokcer 服务,最后执行 docker-compose start 即可。

注意 : Docker 服务重启后,执行 docker-compose start 时有一定几率出现如下错误(或者目录已存在等错误),此时在 docker-compose stop 一下然后在启动即可,实在不行再次重启 Dokcer 服务,千万不要手贱的去删文件(别问我怎么知道的)

4.4.2、Harbor 项目和权限(角色)

用户本身拥有的项目,登陆后可直接 push,其他的用户创建的项目取决于项目是否添加了对应用户和权限,

也就是说用户是否可以向一个项目 push 镜像,取决于权限(角色)设置,如下所示,在项目中可以设置成员和其权限

对于权限(角色), Project Admin 和 Developer 可以有 push 的权限,而Guest 只能查看和 pull

4.4.3、push 镜像

首先使用一个对目标项目具有 push 权限的用户登录,以下 push 的目标是 mritd 项目,test1 用户在项目里定义为 Developer ,所以登录后 push 即可

然后 tag 一个 image,名称一定要标准( registryAddress[:端口]/项目/imageName[:tag] ),最后将其 push 即可

(如果本地有的image,是不会去Registry库中查找的!(查找顺序是先找本地,后查找Registry库,默认库是docker hub)
设置首选Registry库可以通过 --insecure-registry 参数指定。
image的格式是$registry_url/name:tag  $registry_url是Registry库的链接地址,pull push是通过这个地址来判断的。
后面的端口号,可以通过加一个proxy来解决!
)

最后可在 Web UI 中查看刚刚 push 的 image

转载于:https://my.oschina.net/u/1540325/blog/702260

企业级 Docker Registry--harbor安装和简单使用相关推荐

  1. 企业级Docker Registry —— Harbor搭建和使用

    本节内容: Harbor介绍 安装部署Harbor 环境要求 环境信息 安装部署harbor 配置harbor 配置存储 完成安装和启动harbor 访问Harbor 修改管理员密码 启动后相关容器 ...

  2. Docker Registry Harbor

    Docker Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去.但是,有时候,我们的使用场景需要我们拥有一个 ...

  3. 企业级私有registry Harbor通过https访问的详细配置

    2019独角兽企业重金招聘Python工程师标准>>> Harbor安装请参考https://my.oschina.net/u/1762991/blog/1204555 根据文档ht ...

  4. docker仓库harbor安装与使用

    docker最重要的三个概念:docker镜像,docker容器,以及docker仓库.docker镜像是是docker虚拟化中最基础的部分,通过docker镜像来启动一个docker容器,docke ...

  5. 企业级Docker Registry开源工具Harbor的用户使用指南

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 本文承接上一篇安装和配置,主要讲解一些关于不同角色在使用Harbor中的一些指导帮助. 用户手册 概述 该指导将引导你 ...

  6. harbor安装_Harbor简单安装部署,镜像仓库存储使用阿里云OSS

    使用docker-compose创建,此方法简单,问题是无法做到高可用. 环境准备: Harbor使用最新版本的harbor-offline-installer-v2.0.2.tgz 下载链接: ht ...

  7. CentOs7下安装 Docker Registry 私服

    Docker Registry 服务器端安装配制 你不希望将自己的镜像放到公网当中,那么你就需要 Docker Registry,它可以用来存储和管理自己的镜像 安装 Docker Registry ...

  8. docker 离线安装_企业级Docker私库Harbor安装详解

    Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,Harbor提供了基于角色的访问控制机制,并通过项目来对镜像进行组织和访问权限的控制 1:安装 Docker-compo ...

  9. 搭建Harbor企业级docker仓库

    from: https://www.cnblogs.com/pangguoping/p/7650014.html 搭建Harbor企业级docker仓库 一.Harbor简介 1.Harbor介绍 H ...

  10. docker进阶-搭建私有企业级镜像仓库Harbor

    为什么要搭建私有镜像仓库   对于一个刚刚接触Docker的人来说,官方的Docker hub是用于管理公共镜像.既然官方提供了镜像仓库我们为什么还要去自己搭建私有仓库呢?虽然也可以托管私有镜像.我们 ...

最新文章

  1. 【已解决】Android 如何让应用在后台运行
  2. php curl ssr,php curl模拟登陆
  3. php 输出读取结果集,php获取数据库结果集实例详解
  4. 记录学习第三天---系统基础
  5. 换SSD硬盘,重装系统,一阵子忙乱
  6. 黄聪:is_file和file_exists效率比较
  7. 创建数据库以及该数据库下的表单
  8. 利用VLMCSD部署本地KMS服务器(Windows + CentOS7)
  9. [工具]实现文件夹和文件名称批量修改
  10. 不 只{`pyr_PYR的完整形式是什么?
  11. 2010―2011幼儿园大班下学期班务计划
  12. GMM估计分析步骤及结果解读
  13. 签字后被开除_我的易到经历以及老易到员工是如何被乐视派驻高管从易到开除的...
  14. App推广:ASO策略篇,清榜频发,优化热情不减
  15. 勒索病毒频发,信息安全事件如何破 --记两次勒索病毒数据恢复实例
  16. Android实现自适应正方形GridView(陌陌引导页面效果)
  17. 小根堆创建,插入,删除,排序等操作图解
  18. maya藤蔓插件_Maya植物生长王牌插件 Greenworks XFrog v5.3 For Maya 2015
  19. 《秘密》卷一:秘密-吸引力法则
  20. 计算机毕业设计PHP+安卓移动LYQ电子商城APP(源码+程序+lw+远程调试)

热门文章

  1. 共享文件夹只能连接20人_英语正能量 | 快乐可以与人共享,苦难却只能自己坚强...
  2. 源码生成网站,开发帮助网站
  3. linux实验十shell程序设计,实验二Linux Shell编程.doc
  4. PHP数组键不存在给默认值
  5. PHPExcel 导出带生成图片完美案例
  6. UOS开启开发者模式
  7. 编程基本功:如何拆分一个大函数
  8. 分析华为毕昇JDK8:一个性能开关
  9. Dex Loader] Failed to load D:\adt-bundle-windows-x86_64-20190307\sdk\build-tools\28.0.3\lib\dx.jar
  10. 全网首发:无线网桥的延迟太大,有时达到10秒以上