天天看點

搭建Harbor鏡像倉庫 HTTP Insecure Registry搭建Harbor鏡像倉庫 HTTP Insecure Registry

文章目錄

  • 搭建Harbor鏡像倉庫 HTTP Insecure Registry
    • 前言
    • 參考文檔
    • 前置條件
    • 安裝配置過程
      • 安裝Docker
      • 安裝Docker Compose
      • 下載下傳Harbor安裝包
      • 安裝Harbor
        • 修改harbor.cfg配置檔案
        • 安裝Harbor
        • 通路Harbor
      • 配置Harbor
        • 關閉自行注冊
        • 設定為隻能由admin建立project
        • 配置垃圾回收政策
      • 關閉/啟動Harbor
      • 使用Harbor
        • 配置Insecure Registry
        • 推送鏡像到Harbor
        • 從Harbor中拉取鏡像
    • 後記

搭建Harbor鏡像倉庫 HTTP Insecure Registry

前言

在開發容器化應用時候,出于網絡傳輸和安全的考慮,十分有必要在内網搭建一個私有鏡像倉庫(private registry)。

Docker本身提供了Docker registry來搭建簡單的私有鏡像倉庫,但是功能比較單一,難以滿足“企業級鏡像倉庫”的需要。

關于搭建和使用Docker registry參見:

  • 一鍵搭建Docker private registry并使用阿裡雲鏡像加速器
  • Docker registry V2 推送鏡像、拉取鏡像、搜尋鏡像、删除鏡像和垃圾回收

Harbor是VMWare的一個開源項目,對Docker registry進行了擴充,實作了企業級鏡像倉庫的功能。

關于Harbor的更多介紹參見:

  • Harbor官網:https://goharbor.io/
  • Harbor in GitHub:https://github.com/goharbor/harbor

本文介紹了搭建Harbor鏡像倉庫(HTTP Insecure registry)的過程,關于搭建HTTPS Secure registry的過程将在另外的文章中介紹。

參考文檔

  • Harbor安裝配置指南:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md
  • Harbor使用者指南:https://github.com/goharbor/harbor/blob/master/docs/user_guide.md

前置條件

  • CentOS7
  • 聯網

安裝配置過程

這裡選擇的是Harbor in Docker的部署方式,需要先安裝Docker和Docker Compose。

安裝Docker

參見下面文章安裝Docker,并使用阿裡雲鏡像加速器:

  • CentOS7用阿裡雲Docker Yum源線上安裝Docker 17.03.2
  • Docker國内Yum源和國内鏡像倉庫

安裝Docker Compose

參見:

  • 線上安裝Docker Compose

下載下傳Harbor安裝包

在Harbor GitHub上的Release頁面 上下載下傳Harbor offline installer。

安裝Harbor

把下載下傳的Harbor offline installer安裝包上傳到伺服器上一個新的空目錄,解壓安裝包:

tar xvf harbor-offline-installer-v1.7.1.tgz
mv harbor /opt/
           

修改harbor.cfg配置檔案

在安裝Harbor前需要先修改

harbor.cfg

配置檔案,因為這裡隻是建立一個簡單的HTTP Insecure Registry,是以隻需要修改:

hostname = <your_server_ip>
db_password = <your_db_password>
           

Harbor Admin的密碼和一些系統的配置可以等到啟動Harbor後再在Harbor管理頁面修改。

安裝Harbor

在Harbor根目錄下運作

sudo ./install.sh

來安裝Harbor。

如果沒有先安裝好Docker和Docker Compose,則可能會安裝失敗。

安裝成功後運作

docker-compose ps

檢查Harbor是否啟動成功。

通路Harbor

在浏覽器中輸入

http://<harbor_host_name>

就可以通路Harbor了。

Harbor Admin的預設密碼是

admin/Harbor12345

在頁面右上角可以選擇語言。

配置Harbor

安裝并啟動Harbor後還需要對Harbor做一些配置。

對Harbor的更多配置說明請參考Harbor User Guide

關閉自行注冊

Harbor預設允許自行注冊,可以用admin登入後來關閉自行注冊功能:

  1. 打開Configuration -> Authentication
  2. 取消勾選“Allow Self-Registration”

關閉自行注冊功能後,首頁上就看不到賬号注冊的連結了。

如果采用的是預設的

db_auth

模式,則需要通過admin來建立Harbor新賬号。

設定為隻能由admin建立project

Harbor通過project來管理鏡像,預設所有賬号都可以建立project,可以用admin登入後設定成隻能由admin建立project:

  1. 打開Configuration -> System Settings
  2. 選擇Project Creation為“Admin Only”

配置垃圾回收政策

在Harbor中删除鏡像後,并不會真的從磁盤上删除掉鏡像檔案。

為了節約磁盤空間,需要定期執行垃圾回收。

使用admin登入後來配置垃圾回收政策:

  1. 打開Configuration -> Garbage Collection
  2. 點選Edit按鈕,選擇Garbage Collection Schedule

關閉/啟動Harbor

在Harbor根目錄下運作以下指令:

# 關閉Harbor
docker-compose stop
# 啟動Harbor
docker-compose start
           

使用Harbor

在Harbor頁面上的使用比較簡單,這裡主要講在指令行下通過Docker指令來操作鏡像倉庫。

配置Insecure Registry

在Harbor HTTP Insecure Registry模式時,必須先配置Docker允許使用Insecure Registry。

編輯

/etc/docker/daemon.json

,增加

insecure-registries

的配置。

一個包含了阿裡雲鏡像加速器和指向Harbor HTTP Insecure Registry的Docker daemon.json示例:

{
  "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"],
  "insecure-registries": ["192.168.37.170"]
}
           
注意:insecure-registries的值需要和

harbor.cfg

中的hostname保持一緻,否則會

docker login

失敗,比如上面的例子中不能寫成

http://192.168.37.170

重新加載daemon,并重新開機Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker
           

運作

docker info

翻到最後檢視Registry Mirrors和Insecure Registries是否配置正确。

運作

docker login

輸入Harbor賬号的使用者名和密碼登入。

推送鏡像到Harbor

docker login

成功後可以将一個現成的鏡像push到Harbor的project中。

将busybox:latest鏡像push到Harbor的myproject項目中的示例:

# Retag
docker tag busybox:latest 192.168.37.170/myproject/busybox:latest
# Push
docker push 192.168.37.170/myproject/busybox:latest
           

從Harbor中拉取鏡像

docker login

成功後可以從Harbor的project中拉取指定鏡像,比如:

docker pull 192.168.37.170/myproject/busybox:latest
           

後記

本文隻是講了Harbor HTTP Insecure Registry這種最為簡單的模式。

如何搭建Harbor HTTPS Secure Registry請參考:

  • 配置Harbor鏡像倉庫HTTPS Secure Registry

如何對鏡像進行安全掃描則在後續文章中再進行介紹。