Centos7.6 Docker私服搭建-harbor

Harbor使用docker-compose單機容器編排方式一鍵安裝部署,包括如下組件

  • 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都是Docker的鏡像倉庫,但是Harbor作爲更多企業的選擇,是因爲相比較於Regisrty來說,它具有如下優勢:

  • 提供分層傳輸機制,優化網絡傳輸

Docker鏡像是是分層的,而如果每次傳輸都使用全量文件(所以用FTP的方式並不適合),顯然不經濟。必須提供識別分層傳輸的機制,以層的UUID爲標識,確定傳輸的對象。

  • 提供WEB界面,優化用戶體驗

只用鏡像的名字來進行上傳下載顯然很不方便,需要有一個用戶界面可以支持登陸、搜索功能,包括區分公有、私有鏡像。

  • 支持水平擴展集羣

當有用戶對鏡像的上傳下載操作集中在某服務器,需要對相應的訪問壓力作分解。

  • 良好的安全機制

企業中的開發團隊有很多不同的職位,對於不同的職位人員,分配不同的權限,具有更好的安全性。

  • Harbor提供了基於角色的訪問控制機制,並通過項目來對鏡像進行組織和訪問權限的控制。

kubernetes中通過namespace來對資源進行隔離,在企業級應用場景中,通過將兩者進行結合可以有效將kubernetes使用的鏡像資源進行管理和訪問控制,增強鏡像使用的安全性。尤其是在多租戶場景下,可以通過租戶、namespace和項目相結合的方式來實現對多租戶鏡像資源的管理和訪問控制。

之前兩篇介紹了  使用Docker registry兩種方式搭建Docker私服

                           使用Nexus3搭建Docker私服

現在開始搭建Harbor私服......

安裝docker-compose version 1.24.1, build 4667896b

官網太慢,推薦通過pip 安裝

yum -y install epel-release

pip --version

pip install --upgrade pip

pip install docker-compose

https://docs.docker.com/compose/install/

docker官網compose.yml文件屬性詳解 

地址:https://docs.docker.com/compose/compose-file/

安裝

wget  https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.5.tgz

https://github.com/goharbor/harbor/releases/tag/v1.8.2

tar -zxf harbor-offline-installer-v1.7.5.tgz -D /opt

/etc/docker/daemon.json文件增加 192.168.3.34

systemctl  restart docker

修改配置文件

解壓縮之後,目錄下會生成harbor.cfg文件,該文件就是Harbor的配置文件。

hostname = 192.168.3.34

ui_url_protocol = http

customize_crt = off

坑1:若有其他服務佔用80/443端口,想辦法調整規避

修改docker-compose.yml文件

  proxy:
    image: goharbor/nginx-photon:v1.7.5
    container_name: nginx
    restart: always
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
      - NET_BIND_SERVICE
    volumes:
      - ./common/config/nginx:/etc/nginx:z
    networks:
      - harbor
    dns_search: .
    ports:
      - 5080:80
      - 5443:443
      - 4443:4443

修改 common/templates/registry/config.yml

auth:
  token:
    issuer: harbor-token-issuer
    realm: $public_url:5080/service/token

坑2:若是要改變/data目錄,要全部改掉,這裏使用默認路徑/data
#  ./prepare(更新配置文件,如果是重裝,則先rm -rf /data再執行)

#  ./install.sh

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

安裝完成

查看端口占用

netstat -tunlp

查看日誌:

ls /var/log/harbor/

docker-compose ps

docker login 192.168.3.34

username:admin     password:Harbor12345

登錄harbor web:

賬號:admin 密碼爲默認:Harbor12345。密碼在harbor.cfg文件中可以找到。

登錄之後進入下面界面。

測試:

上傳鏡像到Harbor

坑3:不能像之前docker-registry/nexus3那樣打tag,否則push報錯

給鏡像打標籤的時候, 要多一層 library, 這個是缺省的, 否則要建立好了project,才能推鏡像

library是缺省項目,web查看結果如下:

參考:https://github.com/goharbor/harbor/blob/release-1.7.0/docs/installation_guide.md

           kubernetes集羣搭建harbor倉庫,單機搭建harbor以及docker registry倉庫搭建,內附踩坑細節

           Docker Hub與Docker Store詳解

           Docker,Docker-Compose,Docker Swarm,Kubernetes之間的區別

          爲什麼有了Docker registry還需要Harbor?

 

 

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