搭建harbor倉庫

  • 2020 年 1 月 21 日
  • 筆記

學習docker的途中,怎麼能少了牛逼的harbor呢,先說說harbor是什麼吧,harbor: Harbor 是一個企業級的 Docker Registry,可以實現 images 的私有存儲和日誌統計許可權控制等功能,並支援創建多項目(Harbor 提出的概念),基於官方 Registry V2 實現。 通過地址:https://github.com/vmware/harbor/releases 可以下載最新的版本。 官方提供了兩種版本:在線版和離線版。

準備:

Python、Docker和Docker Compose python需要2.7以上的版本 然後docker我用的是docker18.06.1-ce Docker Compose-1.22.0 安裝方式我之前的部落格里有提到,也可以百度自行搜索

安裝:

Harbor 可以通過以下兩種方式之一安裝:

  • 在線安裝程式:安裝程式從Docker集線器下載Harbour的映像。因此,安裝程式的尺寸非常小。
  • 離線安裝程式:當主機沒有Internet連接時,請使用此安裝程式。安裝程式包含預製影像,因此其大小較大。 然後Harbor最新的版本是1.6.2 然後從官方的github地址下載,速度感人,我掛了梯子速度也很慢,然後我就找了一個Google的1.5.1的安裝包地址。 具體安裝步驟如下
  • 下載安裝程式;
  • 配置ports.cfg ;
  • 運行install.sh來安裝和啟動Harbor;

下載

➜  wget https://storage.googleapis.com/harbor-releases/harbor-online-installer-v1.5.1.tgz  ➜  tar xvf harbor-online-installer-v1.5.1.tgz

配置Harbor 配置參數位於文件harbor.cfg中。 配置文件分為必選參數和可選參數,字面意思 必選參數:

  • 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.com
  • email_server_port = 25
  • email_username = [email protected]
  • email_password = abc
  • email_from = admin [email protected]
  • email_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驗證通常在遠程實例具有自簽名或不受信任的證書時使用。

修改完配置文件以後

➜  sudo ./prepare  ➜  docker-compose up -d

也可以直接

➜  sudo ./install

然後等一會就完成了 如果你80埠已經被佔用了,想換一個,修改docker-compose.yml里proxy的埠映射,然後執行

➜  docker-compose down -v  ➜  docker-compose up -d 

然後瀏覽器打開http://ip:port 登錄,默認管理帳號是admin/Harbor12345(配置文件的harbor_admin_password:)

使用

首先在harbor上新建一個項目text,之後在本地的docker配置文件下面修改

➜  vim /etc/docker/daemon.json  {    "registry-mirrors": ["https://vw0w4qo0.mirror.aliyuncs.com"],    "insecure-registries": ["192.168.31.57"]  //添加這一行,地址是harbor主機的ip  }

接著重啟服務

➜  systemctl restart docker    ➜  docker login 192.168.31.150  Username: admin  Password:  WARNING! Your password will be stored unencrypted in /root/.docker/config.json.  Configure a credential helper to remove this warning. See  https://docs.docker.com/engine/reference/commandline/login/#credentials-store    Login Succeeded

給鏡像打tag

➜  docker tag zuolan/resume:latest 192.168.31.150/test/zuoloan/resume:0.0.1

其中test是項目名稱,後面的是介紹,作者/內容:版本

上傳

➜  docker push 192.168.31.150/test/zuoloan/resume:0.0.1

拉取鏡像也是一樣

➜  docker pull 192.168.31.150/test/zuoloan/resume:0.0.1

Tags: