為什么要搭建私有鏡像倉庫
對於一個剛剛接觸Docker的人來說,官方的Docker hub是用於管理公共鏡像。既然官方提供了鏡像倉庫我們為什么還要去自己搭建私有倉庫呢?雖然也可以托管私有鏡像。我們可以非常方便的把我們自己鏡像推送上去,但是Docker hub提供的私有倉庫個數有限。對於個人來說Docker hub是個不錯的選擇,但是對於企業來說,相對於安全 ,成本和公司的架構來說搭建自己的私有鏡像倉庫才是正確的道路。
什么是Harbor?為什么要選擇Harbor
Harbor是一個用於存儲和分發Docker鏡像的企業級Registry服務器,通過添加一些企業必需的功能特性,例如安全、標識和管理等,擴展了開源Docker Distribution。作為一個企業級私有Registry服務器,Harbor提供了更好的性能和安全。提升用戶使用Registry構建和運行環境傳輸鏡像的效率。Harbor支持安裝在多個Registry節點的鏡像資源復制,鏡像全部保存在私有Registry中, 確保數據和知識產權在公司內部網絡中管控。另外,Harbor也提供了高級的安全特性,諸如用戶管理,訪問控制和活動審計等。
- 基於角色的訪問控制 - 用戶與Docker鏡像倉庫通過“項目”進行組織管理,一個用戶可以對多個鏡像倉庫在同一命名空間(project)里有不同的權限。
- 鏡像復制 - 鏡像可以在多個Registry實例中復制(同步)。尤其適合於負載均衡,高可用,混合雲和多雲的場景。
- 圖形化用戶界面 - 用戶可以通過瀏覽器來瀏覽,檢索當前Docker鏡像倉庫,管理項目和命名空間。
- AD/LDAP 支持 - Harbor可以集成企業內部已有的AD/LDAP,用於鑒權認證管理。
- 審計管理 - 所有針對鏡像倉庫的操作都可以被記錄追溯,用於審計管理。
- 國際化 - 已擁有英文、中文、德文、日文和俄文的本地化版本。更多的語言將會添加進來。
- RESTful API - RESTful API 提供給管理員對於Harbor更多的操控, 使得與其它管理軟件集成變得更容易。
- 部署簡單 - 提供在線和離線兩種安裝工具, 也可以安裝到vSphere平台(OVA方式)虛擬設備。
這就是官網原話。完美解釋了什么是Harbor?為什么要選擇Harbor。上面解釋那么多的Harbor, 現在我們來開始安裝吧。
Harbor安裝
要安裝Harbor,有以下幾個先決條件:
Python版本大於或者等於2.7
Docker engine的版本大於等於1.10
Docker Compose的版本大於1.6.0
首先我們需要檢查自己服務器是否支持上面3個條件。輸入以下代碼檢查
#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 可以參考我博客之前的文章。傳送門
下載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文件,
修改完成之后。運行
sudo ./install.sh
進行安裝。安裝完成之后他會自己啟動。這里他會自己下載一些他所需的images。過程有點慢。可以通過阿里雲的鏡像加速器來加速。阿里雲鏡像加速器 .打開鏈接登錄之后點擊鏡像加速。然后你會得到一個專屬加速地址。如圖
可以根據自己的環境查看文檔安裝使用。然后等待命令執行結束。
開啟https
如果使用http的這里可以跳過,我們把已經申請好的證書文件放到/data/cert 目錄下面。然后修改harbor.cfg文件
安裝成功之后打開之前自己設定的域名或者IP地址。測試地址 。測試用戶名:harbor_test,測試密碼:Harbor_test123
使用harbor
創建用戶
harbor已經創建成功。現在我們來開始創建一個用戶。
創建項目
創建項目,並添加用戶
上傳鏡像
首先使用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和操作日志
當我們需要用到這個images的時候可以通過上面給的pull命令下載到本地。到此整個安裝過程結束。