centos7 部署鏡像倉庫 harbor


===============================================

 2018/4/16_第2次修改                       ccb_warlock

 

更新說明:

2018/4/16:在4.3中增加后台啟動容器以實現harbor開機自啟的內容;

===============================================

最近一直在用docker容器相關的東西,經常需要使用遷移鏡像,在沒有私有的鏡像倉庫前,需要到docker hub上創建用戶還要設置鏡像加速。

於是先用registry搭建了一個倉庫,但是使用的時候發現下面的幾個問題:

1.沒有界面(這個不排除我的使用方法不對,我只能用url看鏡像的信息);

2.配置之后是http的,在json配置后只能使用1個私有庫(如果私有庫有多個的情況下得來回改配置文件,太麻煩);

 

因為存在上面2個問題,使得我不得不查找更合理的鏡像倉庫,由於之前看《京東基礎架構建設之路》時看到jdos 2.0的持續集成時使用harbor作為鏡像倉庫,於是嘗試部署了harbor發現其功能確實能滿足目前對鏡像倉庫的需求。

 


 一、基礎設置

 1.1 安裝vim、wget

yum install -y vim wget

 

 1.2 卸載home、擴大root

 如果考慮鏡像倉庫是給研發團隊使用,需要配置較大容量的,因為centos安裝是默認只給root目錄配置50G的空間。

 可以根據我之前的筆記(http://www.cnblogs.com/straycats/p/7769105.html),擴大root空間。

 

 1.3 關閉防火牆

 內部鏡像庫使用,為了部署方便直接關了防火牆。

systemctl stop firewalld
systemctl disable firewalld

 

 1.4 增加域名解析

 ps.由於基於https的harbor需要使用域名,故本次部署的harbor域名為bakreg.cn

 # 修改host文件 

vim /etc/hosts

 # 修改下面的內容,wq保存。 

127.0.0.1   localhost bakreg.cn localhost4 localhost4.localdomain4

 

 1.5 設置主機名

 # 這里將主機名設置和內部域名一樣。

hostnamectl --static set-hostname bakreg.cn

 

 1.6 重啟OS

reboot

  


 二、安裝docker、docker-compose

 由於Harbor是基於Docker Registry V2版本,所以就要求Docker版本不小於1.10.0,Docker-compose版本不小於1.6.0。

 

 2.1 安裝docker

yum install -y docker

 

 2.2 設置docker鏡像加速

 牆的緣故,訪問docker hub不夠穩定,故需要設置鏡像加速器來解決這個問題。
 這里使用的是阿里雲的鏡像加速器。登錄阿里雲后,訪問https://cr.console.aliyun.com/#/accelerator

 

 2.3 啟動、開機啟動docker 

systemctl start docker
systemctl enable docker

 

 2.4 安裝epel 

yum install -y epel-release

 

 2.5 安裝pip 

yum install -y python-pip

 

 2.6 安裝docker-compose 

pip install docker-compose

 

 2.7 查看版本 

docker --version
docker-compose --version

  


 三、添加CA證書

 ps.如果需要搭建基於https的harbor需要添加ca證書,如果搭建的是基於http可以跳過該步驟。

 

 # 創建目錄/root/cert/ 

mkdir -p /root/cert/

 

 # 進入目錄/root/cert/ 

cd /root/cert/

 

 # 生成證書請求文件csr(域名bakreg.cn自行修改) 

openssl req -nodes -subj "/CN=bakreg.cn" -newkey rsa:2048 -keyout bakreg.cn.key -out bakreg.cn.csr

 

 # 生成有效期10年的CA證書crt 

openssl x509 -req -days 3650 -in bakreg.cn.csr -signkey bakreg.cn.key -out bakreg.cn.crt 

 

 # 獲取CA私鑰srl 

openssl x509 -req -in bakreg.cn.csr -CA bakreg.cn.crt -CAkey bakreg.cn.key -CAcreateserial -out bakreg.cn.crt -days 10000

  


 四、部署harbor

 4.1 獲取安裝包

  官方(https://github.com/vmware/harbor/releases)提供了2種部署包(在線、離線),我選了在線安裝包(配了docker加速的情況下,在線包下載鏡像的時間要比離線包快很多)。

 

  # 下載在線安裝包(下載地址根據官網自行選擇,我部署的時候最新是1.4.0)

cd
wget https://storage.googleapis.com/harbor-releases/release-1.4.0/harbor-online-installer-v1.4.0.tgz

 

  # 解壓 

tar xvf harbor-online-installer-v1.4.0.tgz

 

 4.2 修改配置文件

 # 編輯harbor.cfg

vim /root/harbor/harbor.cfg

 # /root/harbor/harbor.cfg文件是Harbor的配置文件,下面列一些可能會修改的項(下面的配置是基於https的harbor,因為https配置后只要在客戶機添加證書和域名解析,可以連接多個鏡像倉庫;如果是http,daemon.json里配置后只能連接一個自己的私有倉庫)。

## Configuration file of Harbor

# hostname設置訪問地址。可以使用ip、域名、主機名,不可以設置為127.0.0.1或localhost。(如果部署的是備份庫,填寫ip而不是域名,否則會導致倉庫管理連接失敗,host無法識別原因不明)
hostname = bakreg.cn

# 訪問協議。默認是http,如果搭建https的倉庫就改為https。
ui_url_protocol = https

# 可選的https證書配置地址 
ssl_cert = /root/cert/bakreg.cn.crt 
ssl_cert_key = /root/cert/bakreg.cn.key

# 用於在復制策略中加密或解密遠程注冊表的密碼的密鑰路徑。secretkey_path不需要修改。如果必須修改它,你需要在/root/harbor/docker-compose.yml中手動調整路徑,因為它們是硬編碼。
secretkey_path = /data

# 郵件設置,發送重置密碼郵件時使用  
# email_identity作為用戶名
email_identity = 

email_server = 郵箱的smtp服務器域名
email_server_port = 25
email_username = 
email_password = 
email_from = 
email_ssl = false
email_insecure = false

# 管理員admin的登錄密碼。默認是Harbor12345
harbor_admin_password = Harbor12345

# 認證方式。默認是db_auth,支持多種認證方式,如數據庫認證(db_auth)、LADP(ldap_auth)。
auth_mode = db_auth

# LDAP認證時配置項(這項可以登錄后配置也可以)。
ldap_url =  # LDAP URL
ldap_searchdn =  # LDAP 搜索DN
ldap_search_pwd =  # LDAP 搜索DN的密碼
ldap_basedn = # LDAP 基礎DN
ldap_filter = # LDAP 過濾器
ldap_uid = # LDAP 用戶uid的屬性
ldap_scope = 2
ldap_timeout = 5

# 是否開啟注冊。on開啟,off關閉。
self_registration = off

# Token有效時間。默認30分鍾。
token_expiration = 30

# 標記用戶創建項目權限控制。默認是everyone(允許所有人創建),也可以設置為adminonly(只能管理員才能創建)
project_creation_restriction = everyone

 

 4.3 harbor啟動、開機啟動

cd /root/harbor
./install.sh

 

由於使用了docker-compose,可以使用后台啟動的方式來實現harbor的開機啟動功能。

cd /root/harbor

# 停止容器

docker-compose stop

# 后台啟動容器

docker-compose up -d

  


 五、登錄

 由於服務部署在192.168.3.1,可以根據IP直接訪問。

 http訪問web:http://192.168.3.1

 https訪問web:https://192.168.3.1

 使用管理員(admin)登錄(沒有修改harbor_admin_password的話,密碼是Harbor12345)。

  


 六、向基於http的harbor上傳下載鏡像

 6.1 客戶機配置

 Docker從1.3.X之后,與docker registry交互默認使用的是https,然而harbor只提供http服務。為了解決這個問題需要在啟動docker時增加啟動參數為默認使用http訪問。

 這里提供2種可行的操作。

 1)修改daemon.json

  # 編輯daemon.json 

vim /etc/docker/daemon.json

 # 添加下面的內容,wq保存。 

{
  "insecure-registries":["192.168.3.1"]
}

 # 重啟docker 

systemctl restart docker

 

 2)修改docker.service

 # 編輯docker.service 

vim /usr/lib/systemd/system/docker.service

 # 添加下面的內容,wq保存。 

在“ExecStart=”中添加
--insecure-registry 192.168.3.1 \

 # 重新載入systemd 

systemctl daemon-reload

 # 重啟docker 

systemctl restart docker 

 

 6.2 上傳下載鏡像

 # docker登錄harbor

docker login 192.168.3.1

 

 # 標記鏡像nginx:v1為192.168.3.1/你的用戶名/nginx:v1 

docker tag nginx:v1 192.168.3.1/你的用戶名/nginx:v1

 

 # 推送鏡像到harbor 

docker push 192.168.3.1/你的用戶名/nginx:v1

 

 # 拉取鏡像

docker pull 192.168.3.1/你的用戶名/nginx:v1

 

 # docker退出登錄harbor

docker logout 192.168.3.1

 


 七、向基於https的harbor上傳下載鏡像

 7.1 客戶機配置

 由於通過openssl創建的是不可信的,直接拉取或登錄時會報“x509: certificate signed by unknown authority”,故需要讓客戶機信任該證書。

 將192.168.3.1中的/root/cert/bakreg.cn.crt遷移到客戶機的/root目錄中。

 

 # 將bakreg.cn的證書追加到客戶機的證書庫中 

cat /root/bakreg.cn.crt >>/etc/pki/tls/certs/ca-bundle.crt

 

 # 重啟docker

systemctl restart docker

 

 # 修改客戶機的hosts

vim /etc/hosts

 # 增加下面的內容,wq保存。

192.168.3.1 bakreg.cn

 

 7.2 上傳下載鏡像 

 # docker登錄harbor

docker login bakreg.cn

 

 # 標記鏡像nginx:v1為bakreg.cn/你的用戶名/nginx:v1 

docker tag nginx:v1 bakreg.cn/你的用戶名/nginx:v1

 

 # 推送鏡像到harbor 

docker push bakreg.cn/你的用戶名/nginx:v1

 

 # 拉取鏡像

docker pull bakreg.cn/你的用戶名/nginx:v1

 

 # docker退出登錄harbor

docker logout bakreg.cn

  


 參考資料:

 1. http://blog.csdn.net/aixiaoyang168/article/details/73549898

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

 3. http://www.bubuko.com/infodetail-1524567.html

 4. https://github.com/vmware/harbor/issues/2208

 5. http://blog.51cto.com/aaronsa/1897891

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

 7. http://dockone.io/question/376


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM