ubuntu 安裝harbor倉庫


一、介紹

  1. Harbor,是一個英文單詞,意思是港灣,港灣是干什么的呢,就是停放貨物的,而貨物呢,是裝在集裝箱中的,說到集裝箱,就不得不提到Docker容器,因為docker容器的技術正是借鑒了集裝箱的原理。所以,Harbor正是一個用於存儲Docker鏡像的企業級Registry服務。
  2. Registry是Dcoker官方的一個私有倉庫鏡像,可以將本地的鏡像打標簽進行標記然后push到以Registry起的容器的私有倉庫中。企業可以根據自己的需求,使用Dokcerfile生成自己的鏡像,並推到私有倉庫中,這樣可以大大提高拉取鏡像的效率。

 

二、Harbor核心組件解釋

  • Proxy:他是一個nginx的前端代理,代理Harbor的registry,UI, token等服務。
  • db:負責儲存用戶權限、審計日志、Dockerimage分組信息等數據。
  • UI:提供圖形化界面,幫助用戶管理registry上的鏡像, 並對用戶進行授權。
  • jobsevice:jobsevice是負責鏡像復制工作的,他和registry通信,從一個registry pull鏡像然后push到另一個registry,並記錄job_log。
  • Adminserver:是系統的配置管理中心附帶檢查存儲用量,ui和jobserver啟動時候回需要加載adminserver的配置。
  • Registry:鏡像倉庫,負責存儲鏡像文件。
  • Log:為了幫助監控Harbor運行,負責收集其他組件的log,供日后進行分析。

 

三:Harbor和Registry的比較

Harbor和Registry都是Docker的鏡像倉庫,但是Harbor作為更多企業的選擇,是因為相比較於Regisrty來說,它具有很多的優勢。


1.提供分層傳輸機制,優化網絡傳輸
Docker鏡像是是分層的,而如果每次傳輸都使用全量文件(所以用FTP的方式並不適合),顯然不經濟。必須提供識別分層傳輸的機制,以層的UUID為標識,確定傳輸的對象。
2.提供WEB界面,優化用戶體驗
只用鏡像的名字來進行上傳下載顯然很不方便,需要有一個用戶界面可以支持登陸、搜索功能,包括區分公有、私有鏡像。
3.支持水平擴展集群
當有用戶對鏡像的上傳下載操作集中在某服務器,需要對相應的訪問壓力作分解。
4.良好的安全機制
企業中的開發團隊有很多不同的職位,對於不同的職位人員,分配不同的權限,具有更好的安全性。
5.Harbor提供了基於角色的訪問控制機制,並通過項目來對鏡像進行組織和訪問權限的控制。kubernetes中通過namespace來對資源進行隔離,在企業級應用場景中,通過將兩者進行結合可以有效將kubernetes使用的鏡像資源進行管理和訪問控制,增強鏡像使用的安全性。尤其是在多租戶場景下,可以通過租戶、namespace和項目相結合的方式來實現對多租戶鏡像資源的管理和訪問控制。

 

四:Harbor簡單部署

官方最小配置

  • 2個cpu
  • 4g內存
  • 40g硬盤,因為是存儲鏡像的所以推薦硬盤大點

 

安裝前配置

在真正安裝之前,我們還要安裝下面這幾個組件

  • docker
  • docker-compose
  • python
  • openssl

 

安裝docker

更新apt源,並添加https支持

sudo apt-get update && sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y

 

使用utc源添加GPG Key

curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add 

 

添加Docker-ce穩定版源地址

sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

 

安裝docker-ce

目前最新版本是19.03.1

sudo apt-get update
sudo apt install -y docker-ce=5:19.03.1~3-0~ubuntu-xenial

 

安裝docker-compose

參考官方鏈接:https://docs.docker.com/compose/install/

 

運行此命令下載docker compose的當前穩定版本:

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

 

對二進制文件應用可執行權限

sudo chmod +x /usr/local/bin/docker-compose

 

由於ubuntu 16.04,默認已經有了python3,openssl也已經安裝好了。

root@ubuntu:~# dpkg -l |grep openssl
ii  libgnutls-openssl27:amd64           3.4.10-4ubuntu1.4                          amd64        GNU TLS library - OpenSSL wrapper
ii  openssl                             1.0.2g-1ubuntu4.10                         amd64        Secure Sockets Layer toolkit - cryptographic utility

 

下載Harbor離線包

https://github.com/vmware/harbor/releases
安裝有兩種方式,一種是off-line ,一種是on-line,即離線和在線安裝,離線安裝需要下載的安裝包較大,在線安裝下載的安裝包很小,課題根據自己的情況選擇,我選擇的是1.8.1版本

 

下載在線安裝包

wget https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-online-installer-v1.8.1.tgz

 

如果無法訪問google,我已經上傳到百度網盤了,可自行下載

 

鏈接:https://pan.baidu.com/s/1mRtaFNfYViz5xywYB9GnXw
提取碼:xsc0

安裝Harbor

解壓安裝包

tar zxvf harbor-online-installer-v1.8.1.tgz -C /usr/src/
cd /usr/src/harbor

 

編輯配置文件

vim harbor.yml

修改hostname為本機ip地址

hostname: 192.168.10.122

 

其它參數,可以根據實際情況修改,去除多余的注釋和空行,配置文件如下:

root@ubuntu:/usr/src/harbor# cat harbor.yml |grep -v "^#"|grep -v "  #"|grep -v "^$"
hostname: 192.168.10.122
http:
  port: 80
harbor_admin_password: Harbor12345
database:
  password: root123
data_volume: /data
clair: 
  updaters_interval: 12
  http_proxy:
  https_proxy:
  no_proxy: 127.0.0.1,localhost,core,registry
jobservice:
  max_job_workers: 10
chart:
  absolute_url: disabled
log:
  level: info
  rotate_count: 50
  rotate_size: 200M
  location: /var/log/harbor
_version: 1.8.0

 

之后直接執行

./install.sh

 

出現以下提示,表示安裝成功

✔ ----Harbor has been installed and started successfully.----

Now you should be able to visit the admin portal at http://192.168.10.122. 
For more details, please visit https://github.com/goharbor/harbor .

 

之后如果你想修改某一個配置比如你要把域名修改一下,我是這么做的先修改上面harbor.cfg這個文件,之后重新執行install.sh這個文件就可以了

 

訪問頁面

http://192.168.10.122

 

使用默認的賬號:admin,密碼:Harbor12345登錄驗證

 

登錄成功之后,效果如下:

 

 

五、測試推送鏡像

登錄到另外一台服務器,確保docker已經安裝好了。

本地配置倉庫地址

由於默認的harbor,已經創建了一個公開項目 libary。

vim /etc/docker/daemon.json

內容如下:

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

 

接着重啟服務

systemctl restart docker

 

推送鏡像

登錄倉庫,admin密碼還是Harbor12345

root@k8s-node1:~# docker login 192.168.10.122
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

 

現在下載一個鏡像alpine

docker pull alpine

 

給鏡像打tag

docker tag alpine:latest 192.168.10.122/library/alpine

 

推送鏡像

root@k8s-node1:~# docker push 192.168.10.122/library/alpine
The push refers to repository [192.168.10.122/library/alpine]
1bfeebd65323: Pushed 
latest: digest: sha256:57334c50959f26ce1ee025d08f136c2292c128f84e7b229d1b0da5dac89e9866 size: 528

 

pull一次倉庫上鏡像的pulls就會加一次,可以在web界面上看的

 

增加開機啟動

vi /etc/rc.local

最后一行添加

#harbor start
cd /usr/src/harbor && docker-compose up -d

 

注意事項

公開的項目,推送鏡像時,docker必須要登錄。

下載鏡像時,無須登錄。

 

非公開項目,下載和推送,必須docker登錄才行。 

 

本文參考鏈接:

https://blog.51cto.com/11093860/2117805

https://yq.aliyun.com/articles/637155

 


免責聲明!

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



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