用 Harbor 架設 Private Docker Registry

什麼是 Docker Registry?

顧名思義就是用來儲存鏡像檔 (Image) 的地方。例如:DockerHub 就是 Docker 官方提供的 Docker Registry,你可以把你自己編寫的 Dockerfile 編譯之後上傳到 Dockerhub ,讓網路上的其他人自由的下載,讓大家站在你的肩膀上寫程式。

Dockerhub 首頁

在 dockerhub 上面可以搜尋到 ubuntu 官方釋出的 docker image

為什麼要架設私有的 Docker Registry?

在這個容器化的時代, 要使用 Kubernetes 生態系,第一步是將原本的實體機器的設定轉換成程式碼,轉換完成後變成 Dockerfile,Dockerfile 編寫著這台機器上所有的設定。

我們需要找一個地方存放由這些 Dockerfile 建立 (build) 出來的 Docker 鏡像檔,這些鏡像檔總不能放在 Dockerhub 上給大家一覽無遺吧?因此我們需要一個私有的 Docker Registry 來放置建立的 Docker 鏡像檔。

Harbor 是什麼?

Harbor 是由 VMware 發行的鏡像檔儲存倉庫,就是你自行架設一個只有公司內部可以存取到的 Dockerhub,公司內部使用的鏡像檔都上傳到上面,要使用時也都從 Harbor 中拉下來 (pull image)。

Harbor 的管理介面如下

每一個專案可以有多個 Repository,而每個 Repository 可以上傳多個 Image

Harbor 在 CI/CD 中扮演的角色

用一張圖表來說明 Docker Registry 在 CI / CD 流程中扮演的角色:

首先我們把程式碼推上 Github,觸發 CI / CD (以 Jenkins 為例) Pipeline,Pipeline 中包含跑測試、程式碼品質檢測 … 等等的步驟,依照需求自由定義。

跑完 CI / CD Pipeline 後便會把 Docker Image 推上 Harbor。接著如果 K8S 需要取用時便會從 Harbor 拉取 (pull) 需要的版本的 Image。

註:更安全的作法是 Github 用私有的程式碼儲存庫取代,這邊為了簡單示意,用 Github 作為程式碼儲存庫的代表。

如何架設 Harbor?

Harbor 的安裝方式

在 Github 上面可以看到 Harbor 是 1 萬顆星星以上的大型開源專案

找到 Install && Run 區域的說明,上面寫著先下載 binary 檔案,然後跟著安裝手冊操作。

我們就進入到 Harbor Release 頁面

往下卷找到 Assets 區域

這時我們點選 online installler 下載,如果在 linux 主機上可以用 wget 取得。

安裝 Docker 與 Docker Compose

接著到 Harbor Installation and Configuration Guide 觀看教學逐步完成安裝,安裝 Harbor 時需要安裝 Docker 與 Docker Compose。

首先我們需要安裝 Docker,用 Ubuntu 18.04 來演練:參考 How To Install and Use Docker on Ubuntu 18.04 逐步完成 docker 安裝。

除了需要 Docker 以外,還需要 docker-compose,參考 How To Install Docker Compose on Ubuntu 18.04

繼續安裝 Harbor

取得剛剛 release 畫面獲得的安裝包位置

1
wget https://github.com/goharbor/harbor/releases/download/v1.10.0/harbor-online-installer-v1.10.0.tgz

解壓縮之

1
tar xvf harbor-online-installer-v1.10.0.tgz

現在你有 harbor 安裝檔資料夾

進入 harbor 資料夾,看到有幾個檔案,install.sh 就是安裝檔了,首先我們要先修改 harbor.yml

將 hostname 修改,否則直接運行 install.sh 是會發生錯誤的。除了修改 hostman 以外,修改 admin password 預設管理員密碼,可以增加安全性。

修改完成後執行 sudo ./install.sh,harbor 需要的服務就會依序被建立起來,就是這麼簡單。

此時訪問這台機器的 ip 位置,就會出現登入畫面囉!

結語

現在你擁有了一個可以放在公司內網的 Docker Registry,你可以在上面自由的上傳自己建立的 Docker Image,不用怕被看光光,是不是很棒呢。

如果喜歡我寫的文章,歡迎追蹤本人帳號 @LukaTwStarBugs Weekly 星巴哥技術週刊 🙂🙂🙂

歡迎訂閱,獲取最新資訊、教學文章,一起變強。

評論