用harbor實現docker registry用於kolla部署openstack
一, 準備docker環境
(一)docker 版本介紹
隨著Docker的不斷流行與發展,docker公司(或稱為組織)也開啟了商業化之路,Docker 從 17.03版本之後分為 CE(CommunityEdition)和 EE(EnterpriseEdition)。
主要區別:Docker EE由公司支持,可在經過認證的操作系統和雲提供商中使用,並可運行來自Docker Store 的、經過認證的容器和插件;Docker CE是免費的Docker產品的新名稱,Docker CE包含了完整的Docker平 臺,非常適合開發人員和運維團隊構建容器APP。事實上,Docker CE 17.03,可理解為Docker 1.13.1的 Bug修復版本。
詳情https://github.com/docker/docker/releases
社區版並非閹割版,而是改了個名稱;企業版則提供了一些收費的高級特性。EE版本維護期1年;Docker CE有兩種版本edge版本每月發布一次,主要面向那些喜歡嘗試新功能的用戶。stable版本每季度發布一次,適用於希望更加容易維護的用戶(穩定版)。edge版本只能在當前月份獲得安全和錯誤修復。而stable版本在初始發布後四個月內接收關鍵錯誤修復和安全問題的修補程序。這樣,Docker CE用戶就有一個月的窗口期來切換版本到更新的版本。舉個例子,Docker CE 17.03會維護到17年07月;而Docker CE 17.03的下個穩定版本是CE 17.06,這樣,6-7月這個時間窗口,用戶就可以用來切換版本了。
(二)docker安裝
安裝環境CentOS Linux release 7.3.1611 (Core) 最小化安裝即可使用國內軟件源提高效率。
#curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
配置主機名
下載docker rpm包
#wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.06.0.ce-1.el7.centos.x86_64.rpm
# yum install ./docker-ce-17.06.0.ce-1.el7.centos.x86_64.rpm
# docker –version
Docker version 17.06.0-ce, build 02c1d87
(三) 安裝docker-compose
Compose是用於定義和運行復雜Docker應用的工具。你可以在一個文件中定義一個多容器的應用,然後使用一條命令來啟動你的應用,然後所有相關的操作都會被自動完成
#yum install python-pip
#pip install -U pip
#pip install -U docker-compose
#docker-compose –version
docker-compose version 1.14.0, build c7bdf9e
二, 部署harbor
(一)harbor項目介紹
Harbor是由VMware中國研發團隊負責開發的開源企業級Registry,可幫助用戶迅速搭建企業級的registry 服務。
詳細介紹請參考http://www.tuicool.com/articles/fe6naqu
(二)部署harbor
Harbor被部署為幾個Docker容器,因此可以部署在任何支持Docker的Linux發行版上。目標主機需要安裝Python,Docker和DockerCompose。
Python應該是2.7或更高版本。
Docker引擎應為1.10或更高版本。
Docker Compose需要為1.6.0或更高版本。
安裝步驟如下
1. 下載安裝程序;
從https://github.com/vmware/harbor/releases下載在線或離線安裝版本這裏下載離線版本
#wget -c https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-offline-installer-v1.1.2.tgz #tar xf harbor-offline-installer-v1.1.2.tgz
2. 配置harbot.cfg
#cd harbor
#vim harbor.cfg
harbor.cfg中的配置項分為必選參數和可選參數,必選參數需要在配置文件中設置若修改 需要重新安裝才能生效。可選參數可以在安裝完成後通過WEBUI更新。
必選參數
hostname:目標主機的主機名,用於訪問UI和註冊表服務。它應該是目標機器的IP地址或完全限定域名(FQDN)。
ui_url_protocol:(http或https。默認為http)用於訪問UI和令牌/通知服務的協議。如果啟用了公證,則此參數必須為https。(不用如果必須使用https)。
db_password:用於db_auth的MySQL數據庫的根密碼。
max_job_workers:(默認值為3)最大進程數。
customize_crt:(on或off。默認為on)當此屬性打開時,prepare腳本將為註冊表令牌的生成或 驗證創建私鑰和根證書。當密鑰和根證書由外部源提供時,將此屬性設置為off。
ssl_cert:SSL證書的路徑,僅當協議設置為https時才應用。
ssl_cert_key:SSL密鑰的路徑,僅當協議設置為https時才應用。
secretkey_path:用於在復制策略中加密或解密遠程註冊表的密碼的密鑰路徑。
可選參數
可選參數和其他配置如存儲配置詳見
https://github.com/vmware/harbor/blob/master/docs/installation_guide.md
創建自己的CA證書
# openssl req -newkeyrsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 3650 -out ca.crt
生成證書簽名文件
#openssl req -newkeyrsa:4096 -nodes -sha256 -keyout jdm.click.key -out jdm.click.csr
生成registry主機使用的證書
#openssl x509 -req -days 365 -in jdm.click.csr -CA ca.crt -CAkeyca.key -CAcreateserial -out jdm.click.crt
參考連接:https://github.com/vmware/harbor/blob/master/docs/configure_https.md
本次安裝中只對如下參數進行修改
# cat harbor.cfg |grep -Ev "^#|^$"
hostname = registry.jdm.click
ui_url_protocol = https
db_password = root123
max_job_workers = 2
customize_crt = on
ssl_cert = /root/cert/jdm.click.crt
ssl_cert_key = /root/cert/jdm.click.key
secretkey_path = /data
harbor_admin_password = Harbor12345 (admin賬號的初始密碼)
生成docker-compose.yml
#./prepar
3. 運行install.sh 並啟動harbor;
#sh install.sh
# cd /root/harbor/
啟動harbor
# docker-compose
啟動後可用過docker ps命令查看啟動的容器
通過瀏覽器訪問https://registry.jdm.click 使用初始密碼登錄
創建一個名為“lokolla”的項目
下載kolla鏡像包
#wget –c http://tarballs.openstack.org/kolla/images/centos-binary-registry-ocata.tar.gz
將壓縮包解壓到/data 目錄
# tar xf centos-binary-registry-ocata.tar.gz -C /data/
為什麽要解壓到data目錄請看docker-compose.yml 文件中registry部分
因此可以判斷/data/registroy目錄就是存放鏡像的目錄
為什麽要新建一個lokolla項目見下圖中層級目錄
拷貝完成後可能需要重啟一下harbor方法如下
#cd /root/harbor (docker-compose.yml文件所在目錄)
# docker-compose restart
4. docker client端配置
在客戶端創建如下目錄
#mkdir –p /etc/docker/certs.d/registroy.jdm.click
並從registry上將證書文件拷貝過來
登錄測試(確保registry主機地址可以被解析)
本文出自 “bf109” 博客,請務必保留此出處http://bf109.blog.51cto.com/6584533/1944088
用harbor實現docker registry用於kolla部署openstack