harbor安裝


Harbor

  • 在生產運維環境中,伴隨鏡像和項目越來越多,單台docker主機無法支撐那么多業務,而Harbor是一個企業級鏡像倉庫Harbor,將作為我們容器雲平台的鏡像倉庫中心。

  • 官網直通車

1.Harbor功能

  • 基於角色訪問控制(RBAC)

    在企業中,通常有不同的開發團隊負責不同的項目,鏡像像代碼一樣,每個人角色不同需求也不同,因此就需要訪問權限控制,根據角色分配相應的權限。
    例如,開發人員需要對項目構建這就用到讀寫權限(push/pull),測試人員只需要讀權限(pull),運維一般管理鏡像倉庫,具備權限分配能力,項目經理具有所有權限。

  • 鏡像復制

    可以將倉庫中的鏡像同步到遠程的Harbor,類似於MySQL主從同步功能。

  • LDAP

    Harbor支持LDAP認證,可以很輕易接入已有的LDAP。

  • 鏡像刪除和空間回收

    Harbor支持在Web刪除鏡像,回收無用的鏡像,釋放磁盤空間。

  • 圖形頁面管理

    用戶很方面搜索鏡像及項目管理。

  • 審計

    對倉庫的所有操作都有記錄。

  • REST API

    完整的API,方便與外部集成。

2.Harbor組件組成

組件 功能
harbor-adminserver 配置管理中心
harbor-db Mysql數據庫
harbor-jobservice 負責鏡像復制
harbor-log 記錄操作日志
harbor-ui Web管理頁面和API
nginx 前端代理,負責前端頁面和鏡像上傳/下載轉發
redis 會話
registry 鏡像存儲

3.環境准備工作

  • 安裝docker
yum install docker 
  • docker加速
vi /etc/docker/daemon.json # 添加如下內容

{
    "registry-mirrors": ["https://registry.docker-cn.com"],
}

4.安裝Harbor

  • 這里使用離線方式安裝,安裝版本是harbor-offline-installer-v1.7.5.tgz

    # 解壓操作
    tar zxvf harbor-offline-installer-v1.7.5.tgz
    # cd harbor
    cd harbor
    # 編輯harbor.cfg
    vi harbor.cfg
    	#配置
    	hostname=10.0.0.132 # 這里可以輸入你的域名
    	ui_url_protocol=http # 這是如果設置https就要自簽名
    	harbor_admin_password = Harbor12345
    	# 如果配置https配置如下2個參數
    	ssl_cert = ./ssl/[你的域名].crt
    	ssl_cert_key = ./ssl/[你的域名].key
    # 執行生成配置文件
    ./prepare
    # 安裝並啟動Harbor
    ./install.sh
    
  • 查看運行狀態

  • 如果有state為非up狀態查看如下目錄日志

    ls /var/log/harbor/
    
  • 登錄web界面

    賬號:admin  
    
    密碼:Harbor12345
    
  • 創建一個用戶

  • 進入library項目,將剛才用戶加入進去

5.推送鏡像

  • 以hello-world為例我事先拉取一個鏡像
docker puill hello-world
  • 標記目標鏡像
docker image tag hello-world 10.0.0.132/library/hello-world

# 這里注意:
	docker image tag [tag名] [鏡像中心域名]/[項目名稱]/[鏡像名稱]:[版本]
	示例:
		docker image tag hello-world registry.ct.com/library/hello-world:latest
  • push上傳
docker push 10.0.0.132/library/hello-world
The push refers to a repository [10.0.0.132/library/hello-world]
Get https://10.0.0.132/v1/_ping: dial tcp 10.0.0.132:443: connect: connection refused
# 此時推送消息報錯,原因沒有登錄
  • 先登錄
[root@bogon harbor]# docker login 10.0.0.132
Username: xujunkai
Password: Harbor12345
Error response from daemon: Get https://10.0.0.132/v1/users/: dial tcp 10.0.0.132:443: connect: connection refused
  • 又報錯,原因是Docker從1.3.X之后的docker registry交互使用HTTPS.但是我們搭建鏡像默認使用HTTP服務,所以報錯。

  • 修改配置,--insecure-registry [harbor主機IP]跳過https驗證

    vim /lib/systemd/system/docker.service
    

  • 重啟

systemctl daemon-reload && systemctl restart docker
  • 重新登錄,成功
[root@bogon harbor]# docker login 10.0.0.132
Username: xujunkai
Password: 
Login Succeeded
  • 推送鏡像,成功
The push refers to a repository [10.0.0.132/library/hello-world]
f22b99068db9: Pushed 
latest: digest: sha256:1b26826f602946860c279fce658f31050cff2c596583af237d971f4629b57792 size: 525

6.下載鏡像

  • 由於搭建的Harbor是HTTP服務, 而Docker-cli默認HTTPS所以,需要配置harbor信任
vi /etc/docker/daemon.json # 添加如下內容

{
    "registry-mirrors": ["https://registry.docker-cn.com"],
    "insecure-registries": ["10.0.0.132"]
}
  • 拉取harbor鏡像
docker pull 10.0.0.132/library/hello-world

7.其他操作

# 必須要在harbor目錄下
# 停止harbor
docker-compose stop
# 啟動容器
docker-compose up -d

8.HTTPS自簽證書

  • 操作方式:
  • 這里你的域名指的是:rg.harbor.com
cd harbor
mkdir ssl
cd ssl
# 生成CA根的證書
openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt
Country Name: CN
Common Name: xujunkai
其他可以不輸入


# 指定倉庫域名
openssl req -newkey rsa:4096 -nodes -sha256 -keyout [你的域名].key -out [你的域名].csr
Country Name: CN
Common Name: 你的域名
# 其他可以不輸入



# 頒發證書
openssl x509 -req -days 365 -in [你的域名].csr -CA ca.crt -CAkey ca.key -CAcreateserial -out [你的域名].crt

openssl x509 -req -days 365 -in rg.harbor.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out rg.harbor.com.crt
  • 此時會生成如下2個文件
[你的域名].crt  [你的域名].key


免責聲明!

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



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