Harbor镜像仓库部署

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

一、简介

    Harbor是VMware中国研发团队开发并开源企业级Registry,对中文支持很友好。

    Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。

    Harbor具有如下特点:

    1.基于角色的访问控制 - 用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。


    2.镜像复制 - 镜像可以在多个Registry实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。

    3.图形化用户界面 - 用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间。

    4.AD/LDAP 支持 - Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理。

    5.审计管理 - 所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。

    6.国际化 - 已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。

    7.RESTful API - RESTful API 提供给管理员对于Harbor更多的操控, 使得与其它管理软件集成变得更容易。

    8.部署简单 - 提供在线和离线两种安装工具, 也可以安装到vSphere平台(OVA方式)虚拟设备。

   

二、Harbor 获取地址

   1.Harbor中文官网:https://vmware.github.io/harbor/cn/

    2.Github地址:https://github.com/vmware/harbor

    3.Harbor下载地址:https://github.com/vmware/harbor/releases

    4.Harbor二进制离线包镜像站点:http://harbor.orientsoft.cn/


三、Harbor 安装前准备

1.安装 docker

1
2
3
4
5
6
7
8
# yum install -y yum-utils device-mapper-persistent-data lvm2
# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# yum -y install docker-ce
# docker --version
Docker version 17.06.2-ce, build cec0b72
# systemctl start docker
# systemctl status docker
# systemctl enable docker


2.安装 docker-compose

1
2
3
4
5
6
7
8
9
10
# yum -y install python-pip
# pip install --upgrade pip
# pip -V
pip 9.0.1 from  /usr/lib/python2 .7 /site-packages  (python 2.7)
# pip install docker-compose
# docker-compose version
docker-compose version 1.16.1, build 6d1ac219
docker-py version: 2.5.1
CPython version: 2.7.5
OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013

    
四、安装 Habor

1.解压并载入镜像(注:制作本文档时harbor版本已更新至1.2.2,请自行下载)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# tar -zxvf harbor-offline-installer-v1.2.0.tgz
# cd harbor
# docker load -i harbor.v1.2.0.tar.gz
# docker images
REPOSITORY                      TAG                 IMAGE ID          CREATED       SIZE
vmware /harbor-log                v1.2.0              c7887347f435    7 weeks ago     200MB
vmware /harbor-jobservice         v1.2.0              1fb18427db11    7 weeks ago     164MB
vmware /harbor-ui                 v1.2.0              b7069ac3bd4b    7 weeks ago     178MB
vmware /harbor-adminserver        v1.2.0              a18331f0c1ae    7 weeks ago     142MB
vmware /harbor-db                 v1.2.0              deb8033b1c86    7 weeks ago     329MB
vmware /registry                  2.6.2-photon        5d9100e4350e    2 months ago    173MB
vmware /postgresql                9.6.4-photon        c562762cbd12    2 months ago    225MB
vmware /clair                     v2.0.1-photon       f04966b4af6c    3 months ago    297MB
vmware /nginx-photon              1.11.13             285492ff20d6    4 months ago    147MB
vmware /harbor-notary-db          mariadb-10.1.10     64ed814665c6    6 months ago    324MB
vmware /notary-photon             signer-0.5.0        b1eda7d10640    7 months ago    156MB
vmware /notary-photon             server-0.5.0        6e2646682e3c    7 months ago    157MB
photon                          1.0                 e6e4e4a2ba1b    16 months ago   127MB


2.配置 harbor

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# sed -i "s/reg.mydomain.com/192.168.100.100/g" harbor.cfg
# sed -i "s/sample_admin/admin/g" harbor.cfg     ##该命令纯属为了好看,并没有使用相关配置
# grep ^[a-z] harbor.cfg                       ###能看则看
### 指定 harbor 的主机名,可以是IP地址,也可以是域名(不能注释再指定)
hostname  = 192.168.100.100
### 指定用户访问使用的协议,默认http  
ui_url_protocol = http
### 指定 mysql 数据库管理员密码
db_password = root123
### 作业服务中的最大复制worker数(缺省值为3)
max_job_workers = 3 
### 是否允许创建用于生成/验证注册表令牌的私钥和根证书(默认为on)
customize_crt = on
### 设置证书文件路径
ssl_cert =  /data/cert/server .crt
ssl_cert_key =  /data/cert/server .key
secretkey_path =  /data
admiral_url = NA
clair_db_password = password
### 邮件相关信息配置
email_identity = 
### 配置邮件服务器地址
email_server = smtp.mydomain.com
### 配置邮件服务器端口
email_server_port = 25
### 配置用户
email_username = admin@mydomain.com
### 配置密码
email_password = abc
### 配置发件人地址
email_from = admin <admin@mydomain.com>
### 配置是否进行ssl加密
email_ssl =  false
### 指定 harbor 管理员密码
harbor_admin_password = Harbor12345
### 使用的认证类型。默认为db_auth,即凭据存储在MySQL数据库中(Harbor还 支持本地及LDAP认证方式)
auth_mode = db_auth
### LDAP端点URL,仅当auth_mode设置为ldap_auth时使用
ldap_url = ldaps: //ldap .mydomain.com
### 查找用户的基本DN,仅当auth_mode设置为ldap_auth时使用
ldap_basedn = ou=people, dc =mydomain, dc =com
### 用于在LDAP搜索期间匹配用户的属性
ldap_uid = uid 
### 用于搜索用户的范围
ldap_scope = 3 
## 设置LDAP超时时间
ldap_timeout = 5
### 是否允许开放注册(默认允许)
self_registration = on
### 令牌服务创建的令牌的过期时间(以分钟为单位,默认30分钟)
token_expiration = 30
### 用户创建项目的权限,默认是everyone(所有人),也可以设置为adminonly(只有管理员才能创建)
project_creation_restriction = everyone
### 确定当 Harbor 与远程注册表实例通信时是否验证SSL / TLS证书
verify_remote_cert = on

注:harbor 的主机名 hostname 不能注释再指定,必须删除默认设置再指定主机名,不然会产生错误。


3.安装 harbor

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# ./install.sh 
[Step 0]: checking installation environment ...
Note: docker version: 17.06.2
Note: docker-compose version: 1.16.1
[Step 1]: loading Harbor images ...
Loaded image: vmware /registry :2.6.2-photon
Loaded image: photon:1.0
Loaded image: vmware /notary-photon :signer-0.5.0
Loaded image: vmware /clair :v2.0.1-photon
Loaded image: vmware /harbor-ui :v1.2.0
Loaded image: vmware /harbor-log :v1.2.0
Loaded image: vmware /harbor-db :v1.2.0
Loaded image: vmware /nginx-photon :1.11.13
Loaded image: vmware /postgresql :9.6.4-photon
Loaded image: vmware /harbor-adminserver :v1.2.0
Loaded image: vmware /harbor-jobservice :v1.2.0
Loaded image: vmware /notary-photon :server-0.5.0
Loaded image: vmware /harbor-notary-db :mariadb-10.1.10
[Step 2]: preparing environment ...
loaded secret from  file /data/secretkey
Generated configuration  file : . /common/config/nginx/nginx .conf
Generated configuration  file : . /common/config/adminserver/env
Generated configuration  file : . /common/config/ui/env
Generated configuration  file : . /common/config/registry/config .yml
Generated configuration  file : . /common/config/db/env
Generated configuration  file : . /common/config/jobservice/env
Generated configuration  file : . /common/config/jobservice/app .conf
Generated configuration  file : . /common/config/ui/app .conf
Generated certificate, key  file : . /common/config/ui/private_key .pem, cert  file : . /common/config/registry/root .crt
The configuration files are ready, please use docker-compose to start the service.
[Step 3]: checking existing instance of Harbor ...
[Step 4]: starting Harbor ...
Creating network  "harbor_harbor"  with the default driver
Creating harbor-log ... 
Creating harbor-log ...  done
Creating harbor-adminserver ... 
Creating registry ... 
Creating harbor-db ... 
Creating harbor-adminserver
Creating registry
Creating registry ...  done
Creating harbor-db ...  done
Creating harbor-ui ...  done
Creating harbor-jobservice ... 
Creating nginx ... 
Creating nginx
Creating nginx ...  done
  ----Harbor has been installed and started successfully.----
Now you should be able to visit the admin portal at http: //192 .168.100.100. 
For  more  details, please visit https: //github .com /vmware/harbor  .


4.查看容器状况

1
2
3
4
5
6
7
8
9
10
# docker-compose ps
        Name                     Command               State                                Ports                              
------------------------------------------------------------------------------------------------------------------------------
harbor-adminserver    /harbor/harbor_adminserver        Up                                                                      
harbor-db            docker-entrypoint.sh mysqld      Up      3306 /tcp                                                        
harbor-jobservice     /harbor/harbor_jobservice         Up                                                                      
harbor-log            /bin/sh  -c crond &&  rm  -f  ...   Up      127.0.0.1:1514->514 /tcp                                         
harbor-ui             /harbor/harbor_ui                 Up                                                                      
nginx                nginx -g daemon off;             Up      0.0.0.0:443->443 /tcp , 0.0.0.0:4443->4443 /tcp , 0.0.0.0:80->80 /tcp
registry              /entrypoint .sh serve  /etc/  ...   Up      5000 /tcp

Harbor共由七个容器组成:

  a.harbor-adminserver:harbor系统管理服务

   b.harbor-db: 由官方mysql镜像构成的数据库容器

   c.harbor-jobservice:harbor的任务管理服务

   d.harbor-log:harbor的日志收集、管理服务

   e.harbor-ui:harbor的web页面服务

   f.nginx:负责流量转发和安全验证

   g.registry:官方的Docker registry,负责保存镜像


5.应用 harbor

浏览器输入 http://harborip  登陆 harbor 镜像仓库页面(帐号admin,密码为harbor.cfg默认密码Harbor12345)

1ec4f400344716c9d016372c7d0f0ce2.png

进入harbor后界面如下

2950aaa327ddcb9b228239539904b57f.png


新建项目(注:默认项目是私有的,公开请打勾)

a9795c68f778853a1dfb07962d51cc34.png


新建完成之后就可以上传镜像到 harbor 镜像仓库了。


a.更改 docker 配置

1
2
3
4
# grep "ExecStart" /usr/lib/systemd/system/docker.service
ExecStart= /usr/bin/dockerd  --insecure-registry=192.168.100.100
# systemctl daemon-reload
# systemctl restart docker

注:docker默认使用https传输镜像,这里使用的是http,所以需要指定,无论上传还是下载都需要指定


b.登陆 harbor(注:第一种方便,第二种安全,实际中请使用第二种)

1
2
# docker login -u admin -p Harbor12345 192.168.100.100
Login Succeeded
1
2
3
4
# docker login 192.168.100.100
Username: admin
Password: 
Login Succeeded


c.给镜像打 tag 并上传至 harbor 

1
2
3
4
5
6
# docker tag 99e59f495ffa 192.168.100.100/k8s/pause-amd64:3.0
# docker push 192.168.100.100/k8s/pause-amd64:3.0
The push refers to a repository [192.168.100.100 /k8s/pause-amd64 ]
5f70bf18a086: Pushed 
41ff149e94f2: Pushed 
3.0: digest: sha256:f04288efc7e65a84be74d4fc63e235ac3c6c603cf832e442e0bd3f240b10a91b size: 939


d.查看上传情况

c13bd6e362429a58ae89b825f54194dc.png


e.下载镜像(pull命令如下图)

cc7ccd06a4dd08fba6754bdc236d3d76.png


附:

1.停止harbor

1
2
# cd harbor
# docker-compose stop


2.启动harbor

1
2
# cd harbor
#  docker-compose start


3.官方安装文档

https://github.com/vmware/harbor/blob/master/docs/installation_guide.md


4.https官方配置指南

https://github.com/vmware/harbor/blob/master/docs/configure_https.md


本文转自  结束的伤感  51CTO博客,原文链接:http://blog.51cto.com/wangzhijian/1978474


相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
5月前
|
Kubernetes Cloud Native 应用服务中间件
云原生|kubernetes|kubernetes集群使用私有镜像仓库拉取镜像(harbor或者官方的registry私有镜像仓库)
云原生|kubernetes|kubernetes集群使用私有镜像仓库拉取镜像(harbor或者官方的registry私有镜像仓库)
839 0
|
3月前
|
数据可视化 Linux 数据安全/隐私保护
Harbor私有镜像仓库搭建
Harbor私有镜像仓库搭建
48 3
|
2月前
|
Dragonfly Docker 容器
实时数仓Hologres容器镜像问题之优化私有化部署如何解决
容器镜像常遇问题包括:将过多组件打包至单一容器、使用systemd导致状态不一致、私有部署中传输未优化的镜像包及基础镜像频繁下发致网络拥堵。应采用轻量化基础镜像,明确镜像版本,并利用镜像层复用来优化。[了解更多](https://developer.aliyun.com/ask/666077)。 避免容器臃肿的方法是选用精简基础镜像,固定镜像版本,并通过镜像层复用来减少重复内容,实现高效部署。[查看详情](https://developer.aliyun.com/ask/666078)。
37 0
|
2月前
|
Docker 容器
docker: 搭建 harbor 镜像仓库
docker: 搭建 harbor 镜像仓库
|
4月前
|
运维 Serverless 文件存储
函数计算产品使用问题之如何将本地代码与容器镜像一起打包部署
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
5月前
|
存储 API 数据安全/隐私保护
企业级Docker镜像仓库Harbor部署与使用
企业级Docker镜像仓库Harbor部署与使用
|
5月前
|
存储 安全 数据库
搭建Harbor镜像仓库
搭建Harbor镜像仓库
288 2
|
5月前
|
运维 IDE Serverless
Serverless 应用引擎产品使用之阿里函数计算中,阿里云容器镜像服务(Container Registry)中创建自定义镜像,然后将其部署到FC上如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
5月前
|
JavaScript Devops Java
DevOps搭建(一)-安装Harbor镜像仓库详细步骤
DevOps搭建(一)-安装Harbor镜像仓库详细步骤
86 0
|
5月前
|
关系型数据库 MySQL Linux
Docker Registry本地镜像仓库部署并实现远程连接拉取镜像
Docker Registry本地镜像仓库部署并实现远程连接拉取镜像
337 1
下一篇
无影云桌面