1. 程式人生 > >企業級Docker映象倉庫harbor的部署和使用

企業級Docker映象倉庫harbor的部署和使用

部署企業私有倉庫往往是很有必要的, 他可以幫助你管理企業的一些敏感映象, 同時由於Docker Hub的下載速度和GFW的原因, 往往需要將一些無法直接下載的映象匯入本地私有倉庫. 而Harbor就是部署企業私有倉庫的一個不二之選。

Harbar簡介

Harbor是VMware公司開源了企業級Registry專案, 其的目標是幫助使用者迅速搭建一個企業級的Docker registry服務。它以Docker公司開源的registry為基礎,額外提供瞭如下功能:

  • 基於角色的訪問控制(Role Based Access Control)
  • 基於策略的映象複製(Policy based image replication)
  • 映象的漏洞掃描(Vulnerability Scanning)
  • AD/LDAP整合(LDAP/AD support)
  • 映象的刪除和空間清理(Image deletion & garbage collection)
  • 友好的管理UI(Graphical user portal)
  • 審計日誌(Audit logging)
  • RESTful API
  • 部署簡單(Easy deployment)

架構介紹

這裡借用別人一張圖:
Harbor Architecture

Harbor依賴的外部元件:

  • Nginx(Proxy): Harbor的registry,UI,token等服務,通過一個前置的反向代理統一接收瀏覽器、Docker客戶端的請求,並將請求轉發給後端不同的服務。
  • Registry v2: Docker官方映象倉庫, 負責儲存Docker映象,並處理docker push/pull命令。由於我們要對使用者進行訪問控制,即不同使用者對Docker image有不同的讀寫許可權,Registry會指向一個token服務,強制使用者的每次docker pull/push請求都要攜帶一個合法的token, Registry會通過公鑰對token進行解密驗證。
  • Database(MySQL):為core services提供資料庫服務,負責儲存使用者許可權、審計日誌、Docker image分組資訊等資料。

Harbor自己元件:

  • Core services(Admin Server): 這是Harbor的核心功能,主要提供以下服務:
    • UI:提供圖形化介面,幫助使用者管理registry上的映象(image), 並對使用者進行授權。
    • webhook:為了及時獲取registry 上image狀態變化的情況, 在Registry上配置webhook,把狀態變化傳遞給UI模組。
    • Auth服務:負責根據使用者許可權給每個docker push/pull命令簽發token. Docker 客戶端向Regiøstry服務發起的請求,如果不包含token,會被重定向到這裡,獲得token後再重新向Registry進行請求。
    • API: 提供Harbor RESTful API
  • Replication Job Service:提供多個 Harbor 例項之間的映象同步功能。
  • Log collector:為了幫助監控Harbor執行,負責收集其他元件的log,供日後進行分析。

部署

這裡不使用kubernetes來部署, 原因是映象倉庫非常重要, 儘量保證部署和維護的簡潔性, 因此這裡直接使用compose的方式進行部署。
官方提供3種部署Harbor的方式:

  • 線上安裝: 從Docker Hub下載Harbor的映象來安裝, 由於Docker Hub比較慢, 建議Docker配置好加速器。
  • 離線安裝: 這種方式應對與部署主機沒聯網的情況使用。需要提前下載離線安裝包: harbor-offline-installer-.tgz 到本地
  • OVA安裝: 這個主要用vCentor環境是使用

後面部署時會為Docker配置映象加速器, 因此會採用線上部署的方式, 部署步驟如下:

  • 下載Harbor最新的線上安裝包
  • 配置Harbor(harbor.cfg)
  • 執行install.sh來安裝和啟動Harbor

環境要求與準備

Harbor以容器的形式進行部署, 因此可以被部署到任何支援Docker的Linux發行版, 並且具備如下環境:

  • Python2.7+
  • Docker Engine 1.10+
  • Docker Compose 1.6.0+

這裡使用CentOS7.3的系統, Python2.7系統自帶了, 剩下的就是安裝Docker和Compose:

[[email protected] ~]# yum install docker -y
[[email protected] ~]# yum -y install epel-release
[[email protected] ~]# yum install python-pip -y
[[email protected] ~]# pip install docker-compose
# 檢視安裝完成的Docker和Compose的版本
[[email protected] ~]# docker version
Client:
 Version:         1.12.6
 API version:     1.24
 Package version: docker-1.12.6-68.gitec8512b.el7.centos.x86_64
 Go version:      go1.8.3
 Git commit:      ec8512b/1.12.6
 Built:           Mon Dec 11 16:08:42 2017
 OS/Arch:         linux/amd64
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
[[email protected] ~]# pip freeze | grep compose
docker-compose==1.18.0

為Docker配置加速器, 方便通過國內映象伺服器快速拉取Docker Hub提供的映象

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://v5d7kh0f.mirror.aliyuncs.com"]
}
EOF
systemctl enable docker
systemctl start  docker
systemctl status  docker

下載安裝包
到Harbor的GitHub倉庫的Release頁面, 下載最新的線上安裝包(如果下載不了, 請從這裡下載百度網盤Harbor安裝包:

[[email protected] ~]# wget https://storage.googleapis.com/harbor-releases/harbor-online-installer-v1.3.0.tgz
[[email protected] ~]# tar vxf harbor-online-installer-v1.3.0.tgz

配置Harbor
在剛才解壓完的目錄下有harbor配置檔案: harbor.cfg, 這裡有幾處必要配置需要修改:

  • hostname: 修改成你本機的ip地址
  • db_password: 資料庫root密碼
  • harbor_admin_password: harbor初始管理員密碼為Harbor12345, 這裡最好修改成自己的
    其他詳細的引數請檢視Harbor官方文件(見參考)

啟動Harbor
解壓完過後再harbor目錄下有一個install.sh, 執行它來進行安裝

[[email protected] harbor]# ./install.sh
[[email protected] harbor]# docker-compose ps
       Name                     Command               State                                Ports
------------------------------------------------------------------------------------------------------------------------------
harbor-adminserver   /harbor/start.sh                 Up
harbor-db            /usr/local/bin/docker-entr ...   Up      3306/tcp
harbor-jobservice    /harbor/start.sh                 Up
harbor-log           /bin/sh -c /usr/local/bin/ ...   Up      127.0.0.1:1514->10514/tcp
harbor-ui            /harbor/start.sh                 Up
nginx                nginx -g daemon off;             Up      0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp, 0.0.0.0:80->80/tcp
registry             /entrypoint.sh serve /etc/ ...   Up      5000/tcp

然後訪問:

使用

服務安裝好了過後, 下面介紹如何通過Docker Client使用Harbor

配置docker客戶端使用Harbor

因為Harbor開啟的是HTTP服務, 而不是HTTPS, 所以要修改下Docker的配置:/etc/docker/daemon.json, 新增引數insecure-registries:

[[email protected] ~]# cat /etc/docker/daemon.json
{
  "registry-mirrors": ["https://v5d7kh0f.mirror.aliyuncs.com"],
  "insecure-registries": ["192.168.204.15"]
}

修改過後重啟docker, 然後重啟Harbor服務:

[[email protected] harbor]# systemctl restart docker
[[email protected] harbor]# docker-compose stop
Stopping harbor-jobservice  ... done
Stopping harbor-ui          ... done
Stopping harbor-db          ... done
Stopping registry           ... done
Stopping harbor-adminserver ... done
Stopping harbor-log         ... done
[[email protected] harbor]# docker-compose start
Starting log         ... done
Starting adminserver ... done
Starting registry    ... done
Starting ui          ... done
Starting mysql       ... done
Starting jobservice  ... done
Starting proxy       ... done

映象的Push和Pull

為了使用Harbor我們需要在Harbor上建立一個專案:kubernetes

注意: 一定要先有專案 然後按照192.168.204.15/{project-name}/{image-name}[:Tag] 的方式打Tag

(a). 建好專案後, 我們先測試下能否Login Harbor

[[email protected] harbor]# docker login 192.168.204.15
Username: admin
Password:
Login Succeeded

(b). 然後為我們的映象打上相應的標籤, 注意標籤格式: 192.168.204.15/{project-name}/{image-name}[:Tag]

[[email protected] ~]# docker tag docker.io/nginx:latest 192.168.204.15/kubernetes/nginx:v1.10
[[email protected] ~]# docker push 192.168.204.15/kubernetes/nginx:v1.10
The push refers to a repository [192.168.204.15/kubernetes/nginx]
a103d141fc98: Pushed
73e2bd445514: Pushed
2ec5c0a4cb57: Pushed
v1.10: digest: sha256:926b086e1234b6ae9a11589c4cece66b267890d24d1da388c96dd8795b2ffcfb size: 948

(c). 最後在另一臺機器上面拉取映象(記得配置Docker客戶端insecure-registries引數, 參考上面):

~/Blogs » docker pull 192.168.204.15/kubernetes/nginx:v1.10                                                                                                    
v1.10: Pulling from kubernetes/nginx
e7bb522d92ff: Pull complete
6edc05228666: Pull complete
cd866a17e81f: Pull complete
Digest: sha256:926b086e1234b6ae9a11589c4cece66b267890d24d1da388c96dd8795b2ffcfb
Status: Downloaded newer image for 192.168.204.15/kubernetes/nginx:v1.10

參考

相關推薦

企業級Docker映象倉庫harbor部署使用

部署企業私有倉庫往往是很有必要的, 他可以幫助你管理企業的一些敏感映象, 同時由於Docker Hub的下載速度和GFW的原因, 往往需要將一些無法直接下載的映象匯入本地私有倉庫. 而Harbor就是部署企業私有倉庫的一個不二之選。 Harbar簡介

企業級鏡像倉庫harbor部署註意事項

就是 部分 成功 cert ffffff pre 操作 https 解決 harbor下載地址https://github.com/vmware/harbor/releases需要安裝docker-compose#yum install python-pip #pip in

安裝企業級docker映象倉庫Harbor

Harbor官方介紹  Harbor是一個用於儲存和分發Docker映象的企業級Registry伺服器,通過新增一些企業必需的功能特性,例如安全、標識和管理等,擴充套件了開源Docker Distribution。作為一個企業級私有Registry伺服器,Harbor提供了更好的效能和安全

企業級Docker映象倉庫的管理運維

容器應用的使用越來越廣泛,容器技術突出的優點就是開發運維一體化。通過把應用及其所依賴的軟體包、作業系統檔案等封裝在容器映象中,使得應用在開發、測試和釋出過程中都具有相同的執行環境,帶來極大的便利。從圖1這張經典的Docker容器狀態轉換圖可以看到,容器映象(images)

docker 映象倉庫 Harbor 部署 以及 跨資料複製

docker 映象倉庫 Harbor 部署 跨資料複製 Harbor 是 Vmwar 公司開源的 企業級的 Docker Registry 管理專案 它主要 提供 Dcoker Registry 管理UI,可基於角色訪問控制, AD/LDAP 整合,日誌稽核等功能,完全的支援中文。 Harbor 的所有

巧用Docker映象倉庫Harbor部署私有Mirror服務

本文作者付廣平,UnitedStack有云儲存工程師,北京郵電大學碩士,從事大資料和雲端計算相關工作,2016年畢業後加入UnitedStack大資料&容器組,負責Docker、Magnum和Sahara相關工作,Openstack、Docker社群活躍者。作者別出

docker 映象倉庫Harbor

企業級映象倉庫Harbor Harbor概述 Habor是由VMWare公司開源的容器映象倉庫。事實上,Habor是在Docker Registry上進行了相應的 企業級擴充套件,從而獲得了更加廣泛的應用,這些新的企業級特性包括:管理使用者介面,基於角色的訪 問控制 ,AD/LDAP整合以及審計日誌等,足

Docker私有倉庫Harbor部署

1、安裝部署docker-compose curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/d

docker 映象倉庫Harbor https訪問

配置harbor的https 為什麼要配置https?因為後續你將映象打包好放入到harbor倉庫中,若是生產環境的映象,會包含很多隱私的配置檔案(db,redis等),需要用到https進行加密 參考文件:https://github.com/goharbor/harbor/blob/master/do

Docker映象倉庫Harbor之搭建及配置

目錄 Harbor介紹 環境、軟體準備 Harbor服務搭建 Harbor跨資料複製配置 FAQ 1、Harbor 介紹 Docker容器應用的開發和執行離不開可靠的映象管理,雖然Docker官方也提供了公共的映象倉庫,但是從安全和效率等方面

Docker映象倉庫Harbor主從映象同步

一、部署主機角色說明主機角色IP地址作業系統摘要主節點(Master)hz01-prod-ops-harbor-01(172.16.8.228)CentOS Linux release 7.3.1611

企業級Docker私有倉庫Harbor部署(http)

eat 部署 tar lib 圖片 默認 epo ble try 部署環境 Centos7.3 x64 docker-ce-17.06.0 docker-compose-1.15.0 Python-2.7.5(系統默認) Docker及Docker-compose安裝

Harbor--搭建企業級私有docker映象倉庫(一)

                Harbor映象倉庫搭建 Harbor是一個用於儲存和分發Docker映象的企業級Registry伺服器,通過新增一些企業必需的功能

基於 Harbor Cephfs 搭建高可用 Docker 映象倉庫叢集

目錄 Harbor & Cephfs 介紹 環境、軟體準備 Cephfs 檔案系統建立 單節點 Harbor 服務搭建 安裝 Harbor 配置掛載路徑 配置使用外部資料庫 多節點 Harbor 叢集服務搭建 測試 Habor 叢集 1、Ha

Docker 企業級映象倉庫 Harbor 的搭建與維護

目錄 一、什麼是 Harbor 二、Harbor 安裝 2.1、Harbor 安裝環境 2.2、Harbor安裝 2.3 配置HTTPS 三、Harbor 的

企業級映象倉庫harbor搭建(http/https)及使用

1.Habor簡介Habor是由VMWare公司開源的容器映象倉庫。事實上,Habor是在Docker Registry上進行了相應的企業級擴充套件,從而獲得了更加廣泛的應用,這些新的企業級特性包括:管理使用者介面,基於角色的訪問控制,AD/LDAP整合以及審計日誌等,足以滿足基本企業需求。2.安裝docke

企業級映象倉庫Harbor

  介紹: Habor是由VMWare公司開源的容器映象倉庫。事實上,Habor是在Docker Registry上進行了相應的企業級擴充套件,從而獲得了更加廣泛的應用,這些新的企業級特性包括:管理使用者介面,基於角色的訪問控制 ,AD/LDAP整合以及審計日誌等,足以滿足基本企業需求

使用HTTPS訪問Docker私有映象倉庫Harbor的配置方法

由於Harbor未附帶任何證書,因此預設情況下使用HTTP來提供登錄檔請求。 但是,強烈建議為任何生產環境啟用安全性。 Harbor有一個Nginx例項作為所有服務的反向代理,所以可以使用prepare指令碼配置Nginx以啟用https。 考慮到Docker服務訪問Registry已經是

基於jenkins構建應用的docker映象做持續整合部署

為了做持續的整合和部署,引入了jenkins,利用jenkins來構建應用的docker映象並push到私有倉庫,然後再基於應用的docker映象來發布專案,這樣減少了很多的手動操作,基本能實現持續整合

Centos7.4 搭建Harbordocker映象倉庫

1、安裝docker,docker-compose yum -y install docker yum -y install docker-compose 2、配置go語言環境,網上百度一下很多的