Docker從入門到實戰(zhàn)系列之Dockerhub&私有化倉庫Harbor搭建及使用
前言
在前面的文章中,我們介紹了如何定制鏡像、容器編排,但仿佛對鏡像管理并沒有提及,那么鏡像文件我們是否可以像管理代碼一樣實現(xiàn)push、pull的操作呢?答案是有的,docker-hub就是一款公共倉庫,在上面可以搜索到別人創(chuàng)建好的各種各樣的鏡像,以及管理自己的鏡像;Harbor是一款私有化鏡像倉庫,我們可以把鏡像上傳上去,同一內(nèi)網(wǎng)下的其他用戶均可以下載使用,因為是部署在自己的服務器,因此對于安全性這方面更有保障。docker-hub和Harbor的關系我們可以類比成GitHub和Gitlab。
一、公共鏡像倉庫Docker-hub
1.docker-hub簡介
公共鏡像倉庫一般是 Docker 官方或者其他第三方組織(阿里云,騰訊云,網(wǎng)易云等)提供的,允許所有人注冊和使用的鏡像倉庫。Docker Hub 是全球最大的鏡像市場,目前已經(jīng)有超過 10w 個容器鏡像。

2.提交鏡像到倉庫
具體步驟:注冊賬號>>登錄>>創(chuàng)建倉庫>>>linux命令行docker登錄>>修改鏡像名稱(保持與倉庫名稱一致)>>提交鏡像到倉庫
① 創(chuàng)建鏡像倉庫
類似于github上創(chuàng)建代碼倉庫,分為public(公開的,互聯(lián)網(wǎng)可見)和private(受保護的,僅自己可見)兩種。


② Linux命令行登錄Docker賬號

③ 修改鏡像名稱,保持與鏡像倉庫一致

④ 提交鏡像到公共倉庫

⑤ 查看鏡像倉庫

二、私有化鏡像倉庫Harbor
1.Harbor簡介
Harbor是由VMware公司開源的企業(yè)級的Docker Registry管理項目,它包括權(quán)限管理(RBAC)、LDAP、日志審核、管理界面、自我注冊、鏡像復制和中文支持等功能。

作為一個企業(yè)級私有 Registry 服務器,Harbor 提供了更好的性能和安全。提升用戶使用 Registry 構(gòu)建和運行環(huán)境傳輸鏡像的效率。Harbor 支持安裝在多個 Registry 節(jié)點的鏡像資源復制,鏡像全部保存在私有 Registry 中, 確保數(shù)據(jù)和知識產(chǎn)權(quán)在公司內(nèi)部網(wǎng)絡中管控。另外,Harbor 也提供了高級的安全特性,諸如用戶管理,訪問控制和活動審計等。
- 基于角色的訪問控制 - 用戶與 Docker 鏡像倉庫通過 “項目” 進行組織管理,一個用戶可以對多個鏡像倉庫在同一命名空間(project)里有不同的權(quán)限。
- 鏡像復制 - 鏡像可以在多個 Registry 實例中復制(同步)。尤其適合于負載均衡,高可用,混合云和多云的場景。
- 圖形化用戶界面 - 用戶可以通過瀏覽器來瀏覽,檢索當前 Docker 鏡像倉庫,管理項目和命名空間。
- AD/LDAP 支持 - Harbor 可以集成企業(yè)內(nèi)部已有的 AD/LDAP,用于鑒權(quán)認證管理。
- 審計管理 - 所有針對鏡像倉庫的操作都可以被記錄追溯,用于審計管理。
- 國際化 - 已擁有英文、中文、德文、日文和俄文的本地化版本。更多的語言將會添加進來。
- RESTful API - RESTful API 提供給管理員對于 Harbor 更多的操控,使得與其它管理軟件集成變得更容易。
- 部署簡單 - 提供在線和離線兩種安裝工具, 也可以安裝到 vSphere 平臺 (OVA 方式) 虛擬設備。
gitee地址:??https://gitee.com/project_harbor/harbor?utm_source=alading&utm_campaign=repo??
2.Harbor搭建
安裝說明: Harbor的所有服務組件都是在Docker中部署的,所以官方安裝使用Docker-compose快速部署,所以需要安裝 Docker、Docker-compose。由于Harbor是基于Docker Registry V2版本,所以就要求Docker版本不小于1.10.0, Docker-compose版本不小于1.6.0。

① 下載并解壓安裝包
在線下載:
② 編輯配置文件
按照如下內(nèi)容編輯:
- hostname改為本機ip
- 端口默認80,可以改為其他指定端口
- 注釋掉https的相關配置

③ 準備安裝環(huán)境
執(zhí)行完成后,本地會多一個docker-compose.yml文件和common目錄

④ 安裝harbor
安裝過程中會自動下載harbor鏡像并啟動相關容器。
⑤ 訪問harbor
安裝成功后,即可訪問harbor:http://192.168.1.122:8087,其中:ip為本機ip,端口為配置文件harbor.yml中配置的端口。默認賬號和密碼為:admin Harbor12345

harbor.yml文件中可查看或修改密碼


⑥ 安裝過程中常見問題及解決
- 報錯redis容器重復

原因:本地已存在redis容器,harbor無法啟動redis容器
解決辦法:修改harbor目錄下docker-compose.yml中的redis容器名稱,重新啟動

查看harbor各個容器狀態(tài):

- 報錯registry容器重復
若本地之前已存在registry容器時,harbor安裝過程會報錯,解決方案:刪除原registry容器,重新執(zhí)行./install.sh進行安裝;若此方式仍報錯,則執(zhí)行docker-compose up -d啟動各個服務;
3.推送本地鏡像到Harbor
① 創(chuàng)建項目

② Docker登錄
由于之前登錄過docker-hub,所以再次使用“docker login”命令登錄時,默認登錄的還是docker-hub的地址。因此,如果想要登錄harbor,需要在登錄時指定登錄地址。
首次登錄,根據(jù)提示輸入harbor用戶名及密碼即可,與前端登錄使用的賬號密碼一致。
由于我前面登錄過一次這個地址,本地會保存認證記錄,因此再次登錄時無需輸入用戶名密碼即可登錄成功。

如遇以下報錯:

則要在/etc/docker/daemon.json文件中將本機ip(端口非80時需要帶上端口號)加入到insecure-registries列表中,并重載配置。

再次登錄后登錄成功:

③ 本地鏡像打tag
鏡像名稱需要命名為:ip:端口號/項目名稱/鏡像名:tag名,才能上傳到該指定項目下,例如rabbitmq鏡像,則名稱為:
192.168.1.122:8087/harbor/rabbitmq:5.7.33
為了方便測試,我直接復制本地的一個鏡像,并重新命名:

④ 推送本地鏡像到Harbor

查看名為harbor的項目下,存在rabbitmq:3.7-management,測試成功。

⑤ 從Harbor拉取鏡像
- 拉取鏡像
從下圖可以看出,MySQL鏡像已經(jīng)拉取成功

同時,Harbor管理端也能看到最新的拉取時間:

- 基于拉取的鏡像創(chuàng)建容器

進入MySQL容器,登錄MySQL

至此,即完成了"登錄harbor后臺>>創(chuàng)建倉庫>>>docker命令行登錄harbor>>修改鏡像名稱(保持與倉庫名稱一致)>>提交鏡像到倉庫>>拉取鏡像>>基于拉取的鏡像創(chuàng)建容器>>查看容器"這一系列完整的操作。






























