首頁

目前文章總數:157 篇

  

最後更新:2024年 12月 07日

0005. 架設 DockerHub Private Repository - Harbor (架設私有企業級免費 Docker 倉庫)

日期:2024年 07月 20日

標籤: Docker Container DockerHub Ubuntu Linux Harbor Git

摘要:Docker


應用所需:1. Linux Ubuntu (本篇 22.04,並假定是全新的主機)
     2. 確保已安裝 Docker (本篇 24.07)
     3. 下載 Harbor (本篇 2.11.0)
解決問題:1. Ubuntu 上架設開放 Http 的 Harobr 內部環境使用的 Private repository DockerHub
     2. Push Image 到 Harobr 與 Pull Image
     ※ DockerHub官網內有聲明考量自己公司的[地理位置、法規要求、公司政策]等,如果兩個國家開戰或安全性為由,政府仍可向企業索取機密資料
基本介紹:本篇分為 4 部分。
第一部分:DockerHub - Harbor 介紹
第二部分:Harbor 下載&配置
第三部分:Harbor 安裝流程
第四部分:Demo 成果






第一部分:DockerHub - Harbor 介紹

Step 1:Harbor 介紹

Harbor官網進入首頁後可以看到以下:

Harbor

Our mission is to be the trusted cloud native repository for Kubernetes


Harbor 的目的是為了當 K8s 最佳的 Image 儲存庫

Step 2:Harbor 優點

再往下會看到介紹

Harbor is an open source registry that secures artifacts with policies and role-based access control, 
ensures images are scanned and free from vulnerabilities, and signs images as trusted. 
Harbor, a CNCF Graduated project, delivers compliance, performance, 
and interoperability to help you consistently and securely manage artifacts across cloud native compute platforms like Kubernetes and Docker.


Harbor 提供管理平台,並且具弱點掃瞄、成為整合 docker 與 K8s 間的協調者
※並且為開源軟體,目前社群上討論的開發者、貢獻者很多,若有設定、使用方式都有很多資源可搜尋參考

Step 3:Harbor 是免費開源

Harbor 是 VMWare 提供的開源軟體 任何人都可以免費使用
成本考量上,可以為企業減少開銷,相較於 DockerHub 的收費,則是 Harbor 的優勢
DockerHub 官網收費說明

第二部分:Harbor 下載&配置

Step 1:下載 Harbor

進入 Github 的 Release頁面,將想要下載的項目做複製超連結
以下為複製連結(使用 offline 離線版本):

https://github.com/goharbor/harbor/releases/download/v2.11.0/harbor-offline-installer-v2.11.0.tgz


關於檔案名稱補充說明:

harbor-offline-installer-v2.11.0.tgz 離線安裝,會將所需的資料都先下載完成
harbor-offline-installer-v2.11.0.tgz.asc 驗證 harbor-offline-installer-v2.11.0.tgz 是否一致 (都常可忽略)
harbor-online-installer-v2.11.0.tgz 連線安裝,下載後只有基本的配置資料
harbor-online-installer-v2.11.0.tgz.asc 驗證 harbor-online-installer-v2.11.0.tgz 是否一致 (都常可忽略)



Step 2:進入 Ubuntu 下載檔案

進入 Ubuntu 主機後,輸入以下指令下載

sudo wget https://github.com/goharbor/harbor/releases/download/v2.11.0/harbor-offline-installer-v2.11.0.tgz



Step 3:解壓縮

下載完成後,可以使用以下指令解壓縮:

tar -xvzf harbor-offline-installer-v2.11.0.tgz


或者使用 WinScp SSH到 Ubuntu 用介面化的方式解壓縮:

Step 4:複製 .tmpl 檔案

接著進入 harbor 資料夾,並且將 harbor.yml.tmpl 複製並改名為 harbor.yml

cd harbor
cp harbor.yml.tmpl harbor.yml


或者使用 WinScp SSH到 Ubuntu 用介面化的方式複製檔案,並重新命名

Step 5:編輯 harbor.yml 檔案

修改以下 3 個地方,目的是為了走 Http 內部環境機器可以使用 Harbor

1. 將自己該機器的 IP 位置貼上,例如我當前 Hyper-v 的 Ubuntu 機器 IP 配的是 172.18.236.53
2. Port 號調整為 5000 (或其他),目的是避開 80 常用的網頁 Port 號
3. Https 全部前面都加上 # 避免走到 Https



Step 6:編輯 harbor.yml 檔案 - 補充

在 Ubuntu 上可以輸入以下,查詢自己的 IP :

ip a



Step 7:確保已安裝 Docker

確保 Ubuntu 上已安裝 Docker,或輸入指令安裝

sudo apt-get install docker-compose



Step 8:配置 insecure-registries - 設定

接著要開通 172.18.236.53:5000 的 Docker 中的 Harbor 訪問權限
如果安裝的是原生的 Docker 路徑應在 /etc/docker 下配置 daemon.json

{
    "insecure-registries" : [ "172.18.236.53:5000" ]
}




如果是用 sanp 安裝 Docker 路徑應在 /var/snap/docker/{數字}/config 下配置 daemon.json

Step 9:配置 insecure-registries - 重啟 Docker

保存後,輸入以下指令重啟 Docker,使設定生效:

systemctl restart docker


Step 10:檢查 Docker

輸入以下指令,檢查 Docker 的 insecure 是否有編輯的結果

docker info



第三部分:Harbor 安裝流程

Step 1:安裝

回到 Ubuntu ,進入解壓縮 Harbor 的資料夾下,輸入以下指令安裝:

./install.sh



Step 2:檢查安裝結果

輸入 docker images 可以看到 Docker-Compose Harbor 安裝了一系列相關的 Image,並且啟動了所有容器
如果不是空的 Ubuntu 機器,會需要對 .yaml 檔案做大量的調整,空機器架設與安裝就很容易

docker images



Step 3:進入 WebUI 管理介面

開啟瀏覽器,輸入以下連結,可以進入首頁,然後輸入預設的帳號密碼即可進入(內部使用,可依照使用規模決定是否更改):
帳號:admin
密碼:Harbor12345

http://172.18.236.53:5000



Step 4:建立專案

依照以下步驟建立自己的專案,讓 Image 可以 Push上來

第四部分:Demo 成果

Step 1:檢查指令

可以檢查該專案的推送指令,這是一個便捷的範本

docker tag SOURCE_IMAGE[:TAG] 172.18.236.53:5000/mytest/REPOSITORY[:TAG]
docker push 172.18.236.53:5000/mytest/REPOSITORY[:TAG]



Step 2:推送 Image - build Image

我們 Pull 一個 hello-world Image 假設是我們 Build 的 Image

docker pull hello-world



Step 3:推送 Image - Login

再推送之前先進行登入,連到 Harbor 上

docker login 172.18.236.53:5000


輸入帳號密碼成功後應可以看到 Login Succeeded

Step 4:推送 Image - 打上Tag

將我們的 Image 標上 Tag, 並且需要 Harbor 的位置

docker tag hello-world:latest 172.18.236.53:5000/mytest/myimage:1.0.0



Step 5:推送 Image - Push 到 Harbor

然後可以順利的Push

docker push 172.18.236.53:5000/mytest/myimage:1.0.0



Step 6:Harbor 收到 Image

我們架設的 Harbor 也順利收到 Image

Step 7:Pull Image

後續其他內部機器若要 Pull Harbor 該檔案只要輸入以下指令:

docker pull 172.18.236.53:5000/mytest/myimage:1.0.0


可以看到成功取得該Image

並且 Harbor 上可以看到 “下載數” 會累加,確實有被使用: