Centos7安裝Docker私服Harbor

一、Harbor簡介

    Harbor是由供職在VMWARE的幾個中國人合夥研發,市面上已經存在衆多Docker私服,爲啥還會出現Harbor?因爲Harbor的重心不同於其他,Harbor的重心在於管理。如:不同的人看到不同的鏡像,多私服聯通等等,並且貼合國情,量身打造的。中文頁面,更是降低了入門門檻。官方網站:https://vmware.github.io/harbor/cn

    下面是Harbor的自我介紹。

    Harbor是一個用於存儲和分發Docker鏡像的企業級Registry服務器,通過添加一些企業必需的功能特性,例如安全、標識和管理等,擴展了開源Docker Distribution。作爲一個企業級私有Registry服務器,Harbor提供了更好的性能和安全。提升用戶使用Registry構建和運行環境傳輸鏡像的效率。Harbor支持安裝在多個Registry節點的鏡像資源複製,鏡像全部保存在私有Registry中, 確保數據和知識產權在公司內部網絡中管控。另外,Harbor也提供了高級的安全特性,諸如用戶管理,訪問控制和活動審計等。

  • 基於角色的訪問控制 - 用戶與Docker鏡像倉庫通過“項目”進行組織管理,一個用戶可以對多個鏡像倉庫在同一命名空間(project)裏有不同的權限。
  • 鏡像複製 - 鏡像可以在多個Registry實例中複製(同步)。尤其適合於負載均衡,高可用,混合雲和多雲的場景。
  • 圖形化用戶界面 - 用戶可以通過瀏覽器來瀏覽,檢索當前Docker鏡像倉庫,管理項目和命名空間。
  • AD/LDAP 支持 - Harbor可以集成企業內部已有的AD/LDAP,用於鑑權認證管理。
  • 審計管理 - 所有針對鏡像倉庫的操作都可以被記錄追溯,用於審計管理。
  • 國際化 - 已擁有英文、中文、德文、日文和俄文的本地化版本。更多的語言將會添加進來。
  • RESTful API - RESTful API 提供給管理員對於Harbor更多的操控, 使得與其它管理軟件集成變得更容易。
  • 部署簡單 - 提供在線和離線兩種安裝工具, 也可以安裝到vSphere平臺(OVA方式)虛擬設備。

二、本文重點

    爲什麼說Docker私服Harbor,而不是Docker鏡像私服Harbor?瞭解Maven的同學應該知道,Maven獲取依賴時,先檢查私服上是否有,如果有就從私服下載,如果沒有就從遠程下載。但Harbor不一樣,默認情況下,Harbor作爲一個封閉的倉庫來使用,比如一個鏡像nginx,如果鏡像nginx沒有推送到Harbor,那麼客戶端是pull不到這個鏡像的。可以修改Harbor的模式爲鏡像模式,鏡像模式下,可以連接遠程倉庫緩存需要的鏡像,但鏡像模式下無法push鏡像。

    本文重點不是如何使用Harbor,因爲Harbor的使用和其他私服並沒有任何區別,都是基於Docker的API,比如tag、pull、push等。至於權限分配管理,都是中文頁面,稍微搗鼓下就好了,並沒有繞人得難點。

    本文的重點是如何快速省事的搭建一套基於https的Harbor私服。

三、環境

3.1 基礎環境

    OS:Centos7

    Docker:18.01.0

3.2 Harbor依賴環境

    Python:2.7+(Centos7自帶Python2.7.5)

    Docker:1.10+

    Docker Compose:1.6.0+

四、安裝

4.1 依賴安裝

pip

wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz
tar -vxf setuptools-1.4.2.tar.gz 
cd setuptools-1.4.2
python2.7 setup.py install
easy_install-2.7 pip

 Docker Compose

pip install docker-compose

4.2 在線安裝

    Harbor支持離線和在線兩種方式,這裏選擇最省事的在線安裝,注意offline是離線,online是在線。下載地址https://github.com/vmware/harbor/releases

    安裝包所在服務器是在國外,可能比較慢,翻牆可快速下載,不翻稍微等下也能獲取到,大小隻有30K,不要以爲下錯了,真的只有30K。

    下載完成後,上傳到服務器,然後解壓並進入根目錄。

    如果是HTTP方式,這裏應該是修改harbor.cfg,然後執行腳本了。但我們不是,我們用的是HTTPS。

4.2.1 證書

    首先需要生成個人證書。 

openssl req \
    -newkey rsa:4096 -nodes -sha256 -keyout ca.key \
    -x509 -days 365 -out ca.crt

    按提示輸入即可,輸入完成後會在當前文件夾下生成ca.key和ca.crt兩個文件。    

    然後生成證書籤名請求

openssl req \
    -newkey rsa:4096 -nodes -sha256 -keyout yourdomain.com.key \
    -out yourdomain.com.csr

    注意其中yourdomain.com,如果希望是通過域名方式訪問私服,那麼在執行命令時,提示的通用名稱必須是完整的域名,比如harbor.docker.com,其他在命令裏的只需要輸入docker.com即可。

    最後然後按照訪問方式(域名|IP)生成註冊表主機的證書

    域名

openssl x509 -req -days 365 -in yourdomain.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out yourdomain.com.crt

    IP

echo subjectAltName = IP:192.168.1.101 > extfile.cnf

  openssl x509 -req -days 365 -in yourdomain.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out yourdomain.com
.crt

 4.2.2 配置

    獲取yourdomain.com.crt和yourdomain.com.key文件後,將它們放到如下目錄中/root/cert/

  cp yourdomain.com.crt /root/cert/
  cp yourdomain.com.key /root/cert/ 

    接下來,編輯文件harbor.cfg,更新主機名和協議,並更新屬性ssl_cert和ssl_cert_key:

  #set hostname
  hostname = reg.yourdomain.com
  #set ui_url_protocol
  ui_url_protocol = https
  ......
  #The path of cert and key files for nginx, they are applied only the protocol is set to https 
  ssl_cert = /root/cert/yourdomain.com.crt
  ssl_cert_key = /root/cert/yourdomain.com.key

    然後爲Harbor生成配置文件

./prepare

    如果不小心以http方式啓動了,沒關係,執行如下命令停止並刪除(系統數據不會跟隨刪除,系統數據保存在文件系統上)

docker-compose down  

    最後重啓

docker-compose up -d

4.3 驗證

    爲Harbour設置HTTPS後,可以通過以下步驟進行驗證:

    打開瀏覽器並輸入地址:https://reg.yourdomain.com。它應該顯示Harbor的用戶界面。

    在具有Docker守護進程的機器上,確保選項“-insecure-registry”不存在,並且您必須將上述步驟中生成的ca.crt複製到/etc/docker/certs.d/reg.yourdomain.com(或您的註冊表主機IP),如果該目錄不存在,請創建它。如果您將nginx端口443映射到另一個端口,則應該創建目錄/etc/docker/certs.d/reg.yourdomain.com:port(或您的註冊表主機IP:端口)。然後運行任何docker命令來驗證設置,例如

docker login reg.yourdomain.com

4.4 示例

    現在將nginx這個鏡像推到私服裏。

    首先下載鏡像

docker pull nginx

    然後打個標籤

docker tag nginx reg.yourdomain.com/library/nginx:0.1

    最後推送到Harbor

docker push nginx:0.1 reg.yourdomain.com/library/nginx:0.1

     再次登錄到Harbor的UI即可看到nginx:0.1的鏡像。

5 參考

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

    HTTPS配置說明:https://github.com/vmware/harbor/blob/master/docs/configure_https.md

    清除鏡像:https://blog.csdn.net/felix_yujing/article/details/78626907?locationnum=3&fps=1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章