docker進階-搭建私有企業級鏡像倉庫Harbor

enter image description here

爲何要搭建私有鏡像倉庫

  對於一個剛剛接觸Docker的人來講,官方的Docker hub是用於管理公共鏡像。既然官方提供了鏡像倉庫咱們爲何還要去本身搭建私有倉庫呢?雖然也能夠託管私有鏡像。咱們能夠很是方便的把咱們本身鏡像推送上去,可是Docker hub提供的私有倉庫個數有限。對於我的來講Docker hub是個不錯的選擇,可是對於企業來講,相對於安全 ,成本和公司的架構來講搭建本身的私有鏡像倉庫纔是正確的道路。html

什麼是Harbor?爲何要選擇Harbor

  Harbor是一個用於存儲和分發Docker鏡像的企業級Registry服務器,經過添加一些企業必需的功能特性,例如安全、標識和管理等,擴展了開源Docker Distribution。做爲一個企業級私有Registry服務器,Harbor提供了更好的性能和安全。提高用戶使用Registry構建和運行環境傳輸鏡像的效率。Harbor支持安裝在多個Registry節點的鏡像資源複製,鏡像所有保存在私有Registry中, 確保數據和知識產權在公司內部網絡中管控。另外,Harbor也提供了高級的安全特性,諸如用戶管理,訪問控制和活動審計等。node

  • 基於角色的訪問控制 - 用戶與Docker鏡像倉庫經過「項目」進行組織管理,一個用戶能夠對多個鏡像倉庫在同一命名空間(project)裏有不一樣的權限。
  • 鏡像複製 - 鏡像能夠在多個Registry實例中複製(同步)。尤爲適合於負載均衡,高可用,混合雲和多雲的場景。
  • 圖形化用戶界面 - 用戶能夠經過瀏覽器來瀏覽,檢索當前Docker鏡像倉庫,管理項目和命名空間。
  • AD/LDAP 支持 - Harbor能夠集成企業內部已有的AD/LDAP,用於鑑權認證管理。
  • 審計管理 - 全部針對鏡像倉庫的操做均可以被記錄追溯,用於審計管理。
  • 國際化 - 已擁有英文、中文、德文、日文和俄文的本地化版本。更多的語言將會添加進來。
  • RESTful API - RESTful API 提供給管理員對於Harbor更多的操控, 使得與其它管理軟件集成變得更容易。
  • 部署簡單 - 提供在線和離線兩種安裝工具, 也能夠安裝到vSphere平臺(OVA方式)虛擬設備。
    這就是官網原話。完美解釋了什麼是Harbor?爲何要選擇Harbor。上面解釋那麼多的Harbor, 如今咱們來開始安裝吧。python

    Harbor安裝

      要安裝Harbor,有如下幾個先決條件:
        Python版本大於或者等於2.7
        
    Docker engine的版本大於等於1.10
        Docker Compose的版本大於1.6.0mysql

  首先咱們須要檢查本身服務器是否支持上面3個條件。輸入如下代碼檢查git

#python2.7官網安裝頁面
https://www.python.org/downloads/release/python-2711/
#檢查Python版本.Ubuntu 16.04已經集成了python2.7。
python -V
#檢查Docker的版本
docker -v
#Docker Compose安裝腳本
sudo curl -L https://github.com/docker/compose/releases/download/1.6.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#檢查Docker Compose的版
docker-compose --version
#若是提示Permission denied。執行如下語句賦權
sudo chmod +x /usr/local/bin/docker-compose

  確保服務器上的軟件版本已經知足以上要求以後。咱們如今開始安裝Harbor。若是不知道怎麼安裝docker 能夠參考我博客以前的文章。傳送門github

下載Harbor
#下載安裝包
wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-offline-installer-v1.1.2.tgz
#解壓
tar -xzf harbor-offline-installer-v1.1.2.tgz
cd harbor
#編輯配置文件
vi harbor.cfg
配置文件註釋參考
## Configuration file of Harbor

#設置訪問地址,支持IP,域名,主機名,禁止設置127.0.0.1
hostname = reg.mydomain.com

#訪問方式,http或者https
ui_url_protocol = http

#郵件通知相關設置
email_server = smtp.mydomain.com
email_server_port = 25
email_username = sample_admin@mydomain.com
email_password = abc
email_from = admin <sample_admin@mydomain.com>
email_ssl = false

#用戶登陸密碼
harbor_admin_password = Harbor12345

#harbor認證模式,默認爲db_auth,本地mysql,也能夠配置ldap認證 
auth_mode = db_auth

#ldap認證配置
ldap_url = ldaps://ldap.mydomain.com
ldap_basedn = ou=people,dc=mydomain,dc=com
ldap_uid = uid 
ldap_scope = 3 

#mysql數據庫設置
db_password = root123
self_registration = on
use_compressed_js = on
max_job_workers = 3 
token_expiration = 30
verify_remote_cert = on
customize_crt = on

#顯示的認證及組織信息 
crt_country = CN
crt_state = State
crt_location = CN
crt_organization = organization
crt_organizationalunit = organizational unit
crt_commonname = example.com
crt_email = example@example.com
project_creation_restriction = everyone

#SSL證書地址。只有開啓https訪問才生效
ssl_cert = /data/cert/server.crt
ssl_cert_key = /data/cert/server.key
#############

  以上按照本身需求修改。若是想開啓https模式訪問須要本身申請ssl證書。harbor默認監聽80端口。若是須要修改端口。請修改目錄下的docker-compose.yml文件,
enter image description here
修改完成以後。運行sql

sudo ./install.sh

  進行安裝。安裝完成以後他會本身啓動。這裏他會本身下載一些他所需的images。過程有點慢。能夠經過阿里雲的鏡像加速器來加速。阿里雲鏡像加速器 .打開連接登陸以後點擊鏡像加速。而後你會獲得一個專屬加速地址。如圖
enter image description here能夠根據本身的環境查看文檔安裝使用。而後等待命令執行結束。
enter image description heredocker

開啓https

  若是使用http的這裏能夠跳過,咱們把已經申請好的證書文件放到/data/cert 目錄下面。而後修改harbor.cfg文件數據庫

enter image description here
  安裝成功以後打開以前本身設定的域名或者IP地址。測試地址 。測試用戶名:harbor_test,測試密碼:Harbor_test123
enter image description here瀏覽器

使用harbor

建立用戶

harbor已經建立成功。如今咱們來開始建立一個用戶。
enter image description here

建立項目

建立項目,並添加用戶
enter image description here

上傳鏡像

  首先使用docker login命令登陸:

#登陸
robin:~ robin$ sudo docker login shepherd618.cn
Username: admin
Password: 
Login Succeeded
#查看本地鏡像
robin:docker_demo robin$ sudo docker images 
Password:
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker_demo         latest              fdd994bee741        19 seconds ago      283MB
node                8.9-alpine          406f227b21f5        2 weeks ago         68.1MB
#給dcoker_demo新增tag
robin:docker_demo robin$ sudo docker tag docker_demo shepherd618.cn/test/demo
#push images
robin:docker_demo robin$ docker push shepherd618.cn/test/demo
The push refers to repository [shepherd618.cn/test/demo]
f8387a884f73: Layer already exists 
d74f9d9e7013: Pushed 
f846841ed47f: Layer already exists 
0198944a9875: Layer already exists 
9dfa40a0da3b: Layer already exists 
latest: digest: sha256:5b33acc5edf6f48cbd8e7ccd216daa4a7da1ebd4871fbc68bc2517136f1ccf44 size: 1374

而後打開harbor,會看到剛剛上傳的images和操做日誌
enter image description here 當咱們須要用到這個images的時候能夠經過上面給的pull命令下載到本地。到此整個安裝過程結束。

相關文章
相關標籤/搜索