Harbor安裝與使用

簡介

Harbor是VMware公司最近開源的企業級Docker Registry項目,項目地址為https://github.com/vmware/harbor 其目標是幫助用戶迅速搭建一個企業級的Docker registry服務。它以Docker公司開源的registry為基礎,提供了管理UI, 基於角色的訪問控制(Role Based Access Control),AD/LDAP集成、以及審計日誌(Audit logging) 等企業用戶需求的功能,同時還原生支持中文。

Harbor的每個組件都是以Docker容器的形式構建的,使用Docker Compose來對它進行部署。用於部署Harbor的Docker Compose模板位於 /Deployer/docker-compose.yml,由5個容器組成:

  • Proxy: 由Nginx 服務器構成的反向代理。
  • Registry:由Docker官方的開源registry 鏡像構成的容器實例。
  • UI: 即架構中的core services, 構成此容器的代碼是Harbor項目的主體。
  • Mysql: 由官方MySql鏡像構成的數據庫容器。
  • Log: 運行著rsyslogd的容器,通過log-driver的形式收集其他容器的日誌。 這幾個容器通過Docker link的形式連接在一起,在容器之間通過容器名字互相訪問。對終端用戶而言,只需要暴露proxy (即Nginx)的服務端口。

安裝

安裝條件

Harbor 部署為幾個Docker容器,因此可以部署在任何支持Docker的Linux發行版上。目標主機需要安裝Python,Docker和Docker Compose。

  • Python應該是2.7或更高版本。請注意,您可能必須在Linux發行版(Gentoo,Arch)上安裝Python,該版本不附帶默認安裝的Python解釋器(2017.6.9補充:Python3 版本會報錯,請用2.7版本)
  • Docker引擎應為1.10或更高版本。有關安裝說明,請參閱:https://docs.docker.com/engine/installation/
  • Docker Compose需要為1.6.0或更高版本。有關安裝說明,請參閱:https://docs.docker.com/compose/install/

安裝步驟

安裝步驟如下

  1. 下載安裝程序
  2. 配置ports.cfg
  3. 運行install.sh來安裝和啟動Harbor

下載安裝程序:

可以從https://github.com/vmware/harbor/releases 面下載安裝程序的二進制文件。選擇在線或離線安裝程序。使用tar命令來提取包。

因為項目在git上,有牆且離線文件比較大,如果宿主機中Docker配置了加速器,可以使用在線安裝會比較快

在線安裝:

<code>$ tar xvf harbor-online-installer-<version>.tgz/<version>/<code>

離線安裝:

<code>$ tar xvf harbor-offline-installer-<version>.tgz/<version>/<code>

配置文件

配置參數位於文件harbor.cfg中。

在ports.cfg中有兩類參數,必需參數和可選參數。

  • 必需參數:需要在配置文件中設置這些參數。如果用戶更新它們harbor.cfg並運行install.sh腳本以重新安裝Harbor,它們將生效。
  • 可選參數:這些參數是可選的。如果他們 配置到harbor.cfg,他們只能在首次啟動Harbor 生效。這些參數的後續更新harbor.cfg將被忽略。海港啟動後,用戶可以將其留空,並在Web UI上進行更新。注意:如果您選擇通過用戶界面設置這些參數,請務必在Harbour啟動後立即進行。特別地,您必須在註冊或創建任何新的用戶之前設置所需的auth_mode。當系統中有用戶(默認管理員用戶除外)時, 無法更改auth_mode。

參數如下所述 – 請注意,至少需要更改hostname屬性。

必需參數:

  • hostname:目標主機的主機名,用於訪問UI和註冊表服務。它應該是目標機器的IP地址或完全限定域名(FQDN),例如192.168.1.10或reg.yourdomain.com。不要使用localhost或127.0.0.1為主機名 – 註冊表服務需要外部客戶端訪問!
  • ui_url_protocol:(http或https。默認為http)用於訪問UI和令牌/通知服務的協議。如果啟用公證,則此參數必須為https。默認情況下,這是http。要設置https協議,請參閱使用HTTPS訪問harbor。
  • db_password:用於db_auth的MySQL數據庫的根密碼。更改此密碼以供任何生產用途!
  • max_job_workers:(默認值為3)作業服務中的最大複製工作數。對於每個映像複製作業,工作程序將存儲庫的所有標籤同步到遠程目標。增加此數字允許系統中更多的併發複製作業。但是,由於每個工作人員都會消耗一定數量的網絡/ CPU / IO資源,請根據主機硬件資源選擇該屬性的值。
  • customize_crt:(打開或關閉,默認為打開)當此屬性打開時,準備腳本將為註冊表令牌的生成/驗證創建私鑰和根證書。當密鑰和根證書由外部源提供時,將此屬性設置為off。有關詳細信息,請參閱自定義密鑰和harbor令牌服務證書。
  • ssl_cert:SSL證書的路徑,僅當協議設置為https時才應用
  • ssl_cert_key:SSL密鑰的路徑,僅當協議設置為https時才應用
  • secretkey_path:用於在複製策略中加密或解密遠程註冊表的密碼的密鑰路徑。

可選參數

  • 電子郵件設置:Harbor需要這些參數才能向用戶發送“密碼重設”電子郵件,只有在需要該功能時才需要這些參數。另外,請注意,在默認情況下SSL連接時沒有啟用-如果你的SMTP服務器需要SSL,但不支持STARTTLS,那麼你應該通過設置啟用SSL email_ssl = TRUE。email_server = smtp.mydomain.comemail_server_port = 25email_username = [email protected]_password = abcemail_from = admin [email protected]_ssl = false
  • harbor_admin_password:管理員的初始密碼。該密碼僅在Harbor 第一次啟動時生效。之後,此設置將被忽略,並且應在UI中設置管理員的密碼。請注意,默認用戶名/密碼為admin / Harbor12345。
  • auth_mode:使用的身份驗證類型。默認情況下,它是db_auth,即憑據存儲在數據庫中。對於LDAP身份驗證,請將其設置為ldap_auth。重要提示:從現有的Harbor 實例升級時,必須確保auth_modeharbor.cfg在啟動新版本的Harbor之前是一樣的。否則,升級後用戶可能無法登錄。
  • ldap_url:LDAP端點URL(例如ldaps://ldap.mydomain.com)。 僅當auth_mode設置為ldap_auth時才使用。
  • ldap_searchdn:具有搜索LDAP / AD服務器權限的用戶的DN(例如uid=admin,ou=people,dc=mydomain,dc=com)。
  • ldap_search_pwd:由ldap_searchdn指定的用戶的密碼。
  • LDAP_BASEDN:基本DN查找用戶,如ou=people,dc=mydomain,dc=com。 僅當auth_mode設置為ldap_auth時才使用。
  • LDAP_FILTER:用於查找用戶,例如,搜索過濾器(objectClass=person)。
  • ldap_uid:用於在LDAP搜索期間匹配用戶的屬性,它可以是uid,cn,電子郵件或其他屬性。
  • ldap_scope:搜索用戶的範圍,1-LDAP_SCOPE_BASE,2-LDAP_SCOPE_ONELEVEL,3-LDAP_SCOPE_SUBTREE。默認值為3。
  • self_registration:(開或關,默認為開)啟用/禁用用戶註冊自己的能力。禁用時,只能由管理員用戶創建新用戶,只有管理員用戶才能在海港創建新用戶。 注意:當auth_mode設置為ldap_auth時,自注冊功能始終被禁用,並且該標誌被忽略。
  • token_expiration:令牌服務創建的令牌的到期時間(以分鐘為單位),默認值為30分鐘。
  • project_creation_restriction:用於控制用戶有權創建項目的標誌。默認情況下,每個人都可以創建一個項目,設置為“adminonly”,以便只有admin才能創建項目。
  • verify_remote_cert:(上或關閉,默認為上)該標誌,判斷是否驗證SSL / TLS證書時碼頭與遠程註冊表實例通信。將此屬性設置為off可繞過SSL / TLS驗證,SSL / TLS驗證通常在遠程實例具有自簽名或不受信任的證書時使用。

配置存儲後端(可選)

默認情況下,Harbor將映像存儲在本地文件系統上。在生產環境中,您可以考慮使用其他存儲後端而不是本地文件系統,如S3,Openstack Swift,Ceph等。您需要更新的是storage文件中的部分common/templates/registry/config.yml。例如,如果您使用Openstack Swift作為存儲後端,則該部分可能如下所示:

storage: swift: username: admin password: ADMIN_PASS authurl: http://keystone_addr:35357/v3/auth tenant: admin domain: default region: regionOne container: docker_images 注意:有關注冊表的存儲後端的詳細信息,請參閱registry配置參考。

完成安裝和啟動harbor

一旦配置了ports.cfg和存儲後端(可選),請使用install.sh腳本安裝並啟動Harbor 。請注意,在線安裝程序可能需要一些時間才能從Docker集線器下載Harbour圖像。

默認安裝(無公證)

在1.1.0版本之後,Harbor已經與Notary進行了集成,但默認情況下安裝不包括公證服務。

<code>$ sudo ./install.sh/<code>

如果一切正常,您應該可以打開一個瀏覽器,訪問http://reg.yourdomain.com的管理員門戶(將reg.yourdomain.com更改為您配置的主機名harbor.cfg)。請注意,默認管理員用戶名/密碼為admin / Harbor12345。

harbor使用

登錄harbor並創建一個項目,如果是公開項目,則所有人都能訪問,如果是私密項目,則必須登錄後才能訪問。

配置主機(非安裝harbor的主機)的Docker守護進程的--insecure-registry參數,然後重啟docker服務。 centos 7 1.10版本以後的主機可以使用下面的方法配置: 沒配置過加速器的可以按下面命令配置:

<code>sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json </<code>

如果已經有這個文件,則可以將

<code>"insecure-registries": ["harbor地址"]/<code>

添加到文件中,注意json格式然後重啟docker服務

<code>sudo systemctl daemon-reloadsudo systemctl restart docker/<code>

使用docker info查看是否配置成功

<code>Insecure Registries: 172.16.1.129 harbor地址 127.0.0.0/8/<code>

登錄harbor

<code>$ docker login 172.16.1.129Username : usernamePassword: Login Succeeded/<code>

推送一個鏡像到鏡像倉庫 harbor中創建一個tomcat項目 鏡像需要先通過docker tag 修改為(harbor地址/項目名稱)開頭

<code>$ docker tag tomcat:7.0.73-7       172.16.1.129/tomcat/7.0.73-7$ docker push 172.16.1.129/tomcat/7.0.73-7The push refers to a repository [172.16.1.129/tomcat/7.0.73-7]75a7395b2296: Pushed d36caa27a882: Pushed 7326b6559ecf: Pushed feaa57cbddb1: Layer already exists 3bf614abaf86: Pushed b0becd8213e2: Pushed fd47add8e1d7: Pushed 39c0bfc3a1cb: Pushed f1d01a184c99: Layer already exists 72e128c24795: Pushed 782d5215f910: Pushed 0eb22bfb707d: Layer already exists a2ae92ffcd29: Layer already exists latest: digest: sha256:39e8f420bad3198d4f773c77694bdeb47500a9a79472cb0e42b4e3af7ea43c0d size: 3039[iven@docker-node ~]$ /<code>

現在上harbor就可以看到這個鏡像了。


Harbor安裝與使用


分享到:


相關文章: