一 Harbor仓库介绍

Harbor是由VMware公司开源的企业级的Docker Registry管理项目,Harbor主要提供Dcoker Registry管理UI,提供的功能包括:基于角色访问的控制权限管理(RBAC)、AD/LDAP集成、日志审核、管理界面、自我注册、镜像复制和中文支持等。Harbor的目标是帮助用户迅速搭建一个企业级的Docker Registry服务。它以Docker公司开源的Registry为基础,额外提供了如下功能:
->  基于角色的访问控制(Role Based Access Control)
->  基于策略的镜像复制(Policy based image replication)
->  镜像的漏洞扫描(Vulnerability Scanning)
->  AD/LDAP集成(LDAP/AD support)
->  镜像的删除和空间清理(Image deletion & garbage collection)
->  友好的管理UI(Graphical user portal)
->  审计日志(Audit logging)
->  RESTful API
->  部署简单(Easy deployment)

Harbor的所有组件都在Dcoker中部署,所以Harbor可使用Docker Compose快速部署。需要特别注意:由于Harbor是基于Docker Registry V2版本,所以docker必须大于等于1.10.0版本docker-compose必须要大于1.6.0版本

二 Harbor仓库结构

Harbor的每个组件都是以Docker容器的形式构建的,可以使用Docker Compose来进行部署。如果环境中使用了kubernetes,Harbor也提供了kubernetes的配置文件。

Harbor大概需要以下几个容器组成ui(Harbor的核心服务)、log(运行着rsyslog的容器,进行日志收集)、mysql(由官方mysql镜像构成的数据库容器)、Nginx(使用Nginx做反向代理)、registry(官方的Docker registry)、adminserver(Harbor的配置数据管理器)、jobservice(Harbor的任务管理服务)、redis(用于存储session)。

三 Harbor安装

1、下载harbor,地址https://github.com/vmware/harbor
2、进入harbor-master/Deploy目录,修改harbor.cfg文件,主要修改以下信息
     2.1、hostname =10.10.10.10 (这个是harbor所在服务器的ip,不能写127.0.0.1)
     2.2、修改邮箱相关信息

3、执行./prepare命令


4.1

Ubuntu:   (sudo vi /etc/default/docker)

DOCKER_OPTS="--insecure-registry 10.10.10.10”

4.2 Centos:

修改/usr/lib/systemd/system/docker.service文件

修改一行  ExecStart=/usr/bin/docker daemon -H fd:// --registry-mirror=https://docker.mirrors.ustc.edu.cn --insecure-registry 10.10.10.10”

为什么要修改这个配置文件呢?--insecure-registry代表本地镜像库,修改了以上配置文件后需要重启docker服务,此时docker login时,将连接指定的本地镜像库。

如果不修改这个配置文件,则登录镜像私服时(docker login 10.10.10.10”)会抛出如下错误

Error response from daemon: Get https://10.10.10.10”/v1/users/: dial tcp 10.10.10.10”:443: getsockopt: connection refused

5、重启docker服务

service docker restart


7、build并启动
docker-compose up -d
8、从docker hub上下载hello-world镜像
docker run hello-world
9、给镜像打标签,以便上传到私服,其中library是harbor默认提供的项目
docker tag hello-world 10.10.20.202/library/hello-world
10、上传镜像
登录镜像私服,执行以下指令,再输入用户名和密码
docker login 10.10.20.202
上传镜像
docker push 10.10.20.202/library/hello-world
11、在浏览器上访问10.10.20.202,用户名:admin,密码:Harbor12345登录完成后,点击library这个项目,即可看到上传的hello-world

以下附带harbor的启动、停止命令

【Build and start Harbor】

$ sudo docker-compose up -d
Creating harbor_log_1
Creating harbor_mysql_1
Creating harbor_registry_1
Creating harbor_ui_1
Creating harbor_proxy_1

【Stop Harbor】

$ sudo docker-compose stop
Stopping harbor_proxy_1 ... done
Stopping harbor_ui_1 ... done
Stopping harbor_registry_1 ... done
Stopping harbor_mysql_1 ... done
Stopping harbor_log_1 ... done
Restart Harbor after stopping

【Start Harbor】

$ sudo docker-compose start
Starting harbor_log_1
Starting harbor_mysql_1
Starting harbor_registry_1
Starting harbor_ui_1
Starting harbor_proxy_1
Remove Harbor's containers while keeping the image data and Harbor's database files on the file system:

【删除Harbor】

$ sudo docker-compose rm
Going to remove harbor_proxy_1, harbor_ui_1, harbor_registry_1, harbor_mysql_1, harbor_log_1
Are you sure? [yN] y
Removing harbor_proxy_1 ... done
Removing harbor_ui_1 ... done
Removing harbor_registry_1 ... done
Removing harbor_mysql_1 ... done
Remove Harbor's database and image data (for a clean re-installation):

$ rm -rf /data/database
$ rm -rf /data/registry


对接LDAP认证

Harbor支持两种认证方式,默认为本地存储,即账号信息存储在mysql下,上文已经具体介绍。接下来介绍另外一 种认证方式LDAP,只需要修改配置文件即可。需要提供ldap url以及ldap basedn参数,并且设置auth_mode为ldap_auth。

快速部署LDAP服务
为了测试方便,我们使用Docker启动一个LDAP服务器,启动脚本如下:

!/bin/bash

NAME=ldap_server
docker rm -f $NAME 2>/dev/null
docker run --env LDAP_ORGANISATION="Unitedstack Inc." \
--env LDAP_DOMAIN="ustack.com" \
--env LDAP_ADMIN_PASSWORD="admin_password" \
-v pwd/containers/openldap/data:/var/lib/ldap \
-v pwd/containers/openldap/slapd.d:/etc/ldap/slapd.d \
--detach --name $NAME osixia/openldap:1.1.2

创建新用户,首先需要定义ldif文件,new_user.ldif:
dn: uid=test,dc=ustack,dc=com
uid: test
cn: test
sn: 3
objectClass: top
objectClass: posixAccount
objectClass: inetOrgPerson
loginShell: /bin/bash
homeDirectory: /home/test
uidNumber: 1001
gidNumber: 1001
userPassword: 1q2w3e4r
mail: test@example.com
gecos: test

通过以下脚本创建新用户,其中ldap_server为LDAP服务容器名称。
docker cp new_user.ldif ldap_server:/
docker exec ldap_server ldapadd -x \
-D "cn=admin,dc=ustack,dc=com" \
-w admin_password \
-f /new_user.ldif -ZZ

查看用户是否创建成功:
docker exec ldap_server ldapsearch -x -h localhost \
-b dc=ustack,dc=com -D "cn=admin,dc=ustack,dc=com" \
-w admin_password
检查test用户是否存在,若存在,则说明创建成功,否则需要使用docker logs查看日志。

配置Harbor使用LDAP认证
修改harbor.cfg文件关于LDAP配置项,如下:
auth_mode = ldap_auth
ldap_url = ldap://10.10.20.202
ldap_basedn = uid=%s,dc=ustack,dc=com

然后重新部署Harbor:
./prepare
docker-compose stop
docker-compose rm -f
docker-compose up -d

测试是否能够使用test用户登录:
docker login -u test -p 1q2w3e4r \
-e test@example.com 10.10.20.202

参考资料

Docker私有仓库Harbor介绍和部署记录 - 散尽浮华 - 博客园 (cnblogs.com)https://www.cnblogs.com/kevingrace/p/6547616.html巧用Docker镜像仓库Harbor部署私有Mirror服务 - DockOne.io

Harbor项目:GitHub - goharbor/harbor: An open source trusted cloud native registry project that stores, signs, and scans content.
官方配置mirror registry文档:https://github.com/docker/dist ... or.md
Daocloud关于mirror的博客:DaoCloud宣布Docker Hub Mirror服务永久免费 - DaoCloud
openLDAP部署:GitHub - osixia/docker-openldap: A docker image to run OpenLDAP

Docker: vmware企业级docker镜像私服--Harbor的搭建相关推荐

  1. 企业级容器镜像仓库Harbor的搭建

    Harbor简述 Habor是由VMWare公司开源的容器镜像仓库.事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理 ...

  2. Docker镜像仓库Harbor之搭建及配置

    Docker镜像仓库Harbor之搭建及配置 1.Harbor 介绍 Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署 ...

  3. Harbor的搭建(vmware企业级docker镜像私服)

    1.下载harbor,地址https://github.com/vmware/harbor 2.进入harbor-master/Deploy目录,修改harbor.cfg文件,主要修改以下信息     ...

  4. 企业级Docker容器镜像仓库Harbor的搭建

    Harbor简述 Habor是由VMWare公司开源的容器镜像仓库.事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理 ...

  5. 镜像浏览器_Docker 企业级私有镜像仓库 Harbor 部署

    Docker官方仓库为 Docker Registry 作为镜像仓库,部署过程中会遇到了很多问题. 除此之处,Docker Registry 没有管理页面,甚至连一些运维必备的功能都是缺失的,还有什么 ...

  6. 【云原生 | 07】官方镜像仓库Docker Hub和企业级私有镜像仓库Harbor

  7. springboot学习(六十七) springboot项目通过gradle-docker-plugin插件构建为doker镜像并推送至镜像私服

    文章目录 前言 1.使用gradle部署springboot项目 2.Docker开启远程访问 3.安装镜像私服Harbor 4.gradle中配置插件 前言 springboot从2.4默认提供了打 ...

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

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

  9. IDEA中使用Docker插件构建镜像并推送至私服Harbor

    IDEA中使用Docker插件构建镜像并推送至私服Harbor 一.开启Docker服务器的远程访问 1.1 开启2375远程访问 1.2 添加harbor镜像配置 1.3 重启docker服务 二. ...

最新文章

  1. MySQL 错误对照表
  2. 布道微服务_06微服务调用的监控
  3. 转载:【OpenCV入门教程之五】 分离颜色通道多通道图像混合
  4. python中什么是序列_在Python中,什么是字符串序列?(或者是油嘴滑舌的虫子?)...
  5. netflix-hystrix-简例
  6. python导入自己写的包_python的模块,包和目录的区别和自定义包的注意点
  7. android 编译api,Android逆向利器,直接将apk转换为可二次开发Android工程,提供So hook Api,......
  8. ARCGIS破解教程(arcgis10.2(含ARCGIS下载地址)
  9. 容器化 RDS:借助火焰图定位Kubernetes性能问题
  10. 两个分数化简比怎么化_分数化简比的方法什么,六年级上求比值与化简比的对比...
  11. 定时关机软件里的锁定计算机,怎么让电脑定时关机设置大全
  12. 《VoIP技术构架(第2版·修订版)》一1.4 语音与数据网合二为一的驱动力
  13. Airbnb NYC2019分析实战
  14. LeetCode刷题记 --- pta 7- 4
  15. 金融信息安全实训 课堂笔记5
  16. PS快速处理证件照(给证件照拉直)
  17. 【每日早报】2019/08/13
  18. C++自学教程第一课——你好世界,我是柠檬鲸。
  19. 微信云开发通过定时任务,对用户进行消息推送。
  20. shiro权限管理的配置

热门文章

  1. call、apply和bind的原生实现
  2. Spark MLlib回归算法------线性回归、逻辑回归、SVM和ALS
  3. php入门05-会话控制(session与cookie)
  4. ASP.NET MVC中使用DropDownList
  5. javadoc时候乱码-编码 GBK 的不可映射字符 - wqjsir的专栏 - 博客频道 - CSDN.NET
  6. 建立SQL Server警告和给操作员发送email通知
  7. 一张纸折多少次可以变成珠穆朗玛峰那么高?
  8. 经典C/C++面试题
  9. oracle备份集注册,OracleRMAN将备份集重新注册到控制文件说明
  10. labelimg如何调整框的颜色_P图改字:来看看吧!教你如何用PS墙壁发光灯泡广告文字图片...