Harbor和Registry都是Docker的鏡像倉庫,可是Harbor做爲更多企業的選擇,是由於相比較於Regisrty來講,它具備不少的優點。前端
1.提供分層傳輸機制,優化網絡傳輸
Docker鏡像是是分層的,而若是每次傳輸都使用全量文件(因此用FTP的方式並不適合),顯然不經濟。必須提供識別分層傳輸的機制,以層的UUID爲標識,肯定傳輸的對象。
2.提供WEB界面,優化用戶體驗
只用鏡像的名字來進行上傳下載顯然很不方便,須要有一個用戶界面能夠支持登錄、搜索功能,包括區分公有、私有鏡像。
3.支持水平擴展集羣
當有用戶對鏡像的上傳下載操做集中在某服務器,須要對相應的訪問壓力做分解。
4.良好的安全機制
企業中的開發團隊有不少不一樣的職位,對於不一樣的職位人員,分配不一樣的權限,具備更好的安全性。
5.Harbor提供了基於角色的訪問控制機制,並經過項目來對鏡像進行組織和訪問權限的控制。kubernetes中經過namespace來對資源進行隔離,在企業級應用場景中,經過將二者進行結合能夠有效將kubernetes使用的鏡像資源進行管理和訪問控制,加強鏡像使用的安全性。尤爲是在多租戶場景下,能夠經過租戶、namespace和項目相結合的方式來實現對多租戶鏡像資源的管理和訪問控制。node
在真正安裝以前,咱們還要安裝下面這幾個組件python
更新apt源,並添加https支持linux
sudo apt-get update && sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y
使用utc源添加GPG Keynginx
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add
添加Docker-ce穩定版源地址git
sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
安裝docker-cegithub
目前最新版本是19.03.1web
sudo apt-get update sudo apt install -y docker-ce=5:19.03.1~3-0~ubuntu-xenial
參考官方連接:https://docs.docker.com/compose/install/docker
運行此命令下載docker compose的當前穩定版本:json
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
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
解壓安裝包
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登陸才行。
本文參考連接: