1. 程式人生 > >Harbor鏡像倉庫部署

Harbor鏡像倉庫部署

docker registry harbor 鏡像倉庫

一、簡介

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

# 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

# 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,請自行下載)

# 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

# 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 = [email protected]
### 配置密碼
email_password = abc
### 配置發件人地址
email_from = admin <[email protected]>
### 配置是否進行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

# ./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.查看容器狀況

# 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)

技術分享

進入harbor後界面如下

技術分享


新建項目(註:默認項目是私有的,公開請打勾)

技術分享


新建完成之後就可以上傳鏡像到 harbor 鏡像倉庫了。


a.更改 docker 配置

# 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(註:第一種方便,第二種安全,實際中請使用第二種)

# docker login -u admin -p Harbor12345 192.168.100.100
Login Succeeded
# docker login 192.168.100.100
Username: admin
Password: 
Login Succeeded


c.給鏡像打 tag 並上傳至 harbor

# 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.查看上傳情況

技術分享


e.下載鏡像(pull命令如下圖)

技術分享


附:

1.停止harbor

# cd harbor
# docker-compose stop


2.啟動harbor

# 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

本文出自 “記事本” 博客,請務必保留此出處http://wangzhijian.blog.51cto.com/6427016/1978474

Harbor鏡像倉庫部署