您好,登錄后才能下訂單哦!
一、準備一臺Linux主機
我用了一臺VMware虛擬機,配置如下:
IP:192.168.1.79
安裝時注意一定要將最大的空間分給/data,因為Harbor默認會使用這個分區(qū)
官網(wǎng)硬件要求
1、開SSH
systemctl enable sshd
2、關閉SELINUX
vi /etc/sysconfig/selinux
修改下邊紅字部分
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
3、安裝rz
yum -y install lrzsz
之后上傳文件一定要用-be參數(shù)(其中-b是--binary用二進制的方式上傳,-e是--escape強制escape所有控制字符),否則上傳的文件不完整
rz –be
4、安裝wget
yum -y install wget
5、更換yum源,用于提速yum
(1)備份yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
(2)下載新的CentOS-Base.repo 到/etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
清理緩存
yum clean all
重新生成緩存
yum makecache
6、關閉防火墻
systemctl stop firewalld
systemctl disable firewalld
?
二、安裝Harbor
官網(wǎng)教程:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md
1、安裝必須的組件
官網(wǎng)軟件要求見下,實際安裝最新版本即可
安裝python
CentOS7默認自帶已安裝好
安裝docker
由于Docker已分為社區(qū)版和企業(yè)版,要裝最新版本只能選擇社區(qū)版,所以不要直接用yum install docker –y安裝,否則安裝的是舊版的Docker
(1)安裝所需的軟件包 yum-utils、device-mapper-persistent-data和 lvm2
yum remove docker-latest-logrotate docker-logrotate docker-selinux dockdocker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2
(2)國內(nèi)部分用戶可能無法連接docker官網(wǎng)提供的源,這里提供阿里云的鏡像節(jié)點供測試使用
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
rpm --import http://mirrors.aliyun.com/docker-ce/linux/centos/gpg
yum makecache fast
yum -y install docker-ce
啟動docker和檢查運行狀態(tài)
systemctl start docker
systemctl status docker
將服務加入到啟動項
systemctl enable docker
查看版本
安裝docker-compose
編譯安裝pip
https://pypi.org/project/setuptools/
yum install unzip -y
unzip setuptools-40.4.3.zip
cd setuptools-40.4.3
python setup.py install
https://pypi.org/project/pip/
tar -xf pip-18.1.tar.gz
cd pip-18.1
python setup.py install
加速pip
cd ~
mkdir .pip
ls ~/.pip
vi ~/.pip/pip.conf
寫入
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
?
[install]
trusted-host=mirrors.aliyun.com
pip安裝docker-compose
pip install docker-compose
pip install --upgrade docker-compose
查看版本
docker-compose -v
2、安裝Harbor
(1)從這里下載:https://github.com/goharbor/harbor/releases。PS:不×××無法下載
一定要下載offline離線安裝包:https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.6.1.tgz
(2)解壓
tar xvf harbor-offline-installer-v1.6.1.tgz
移動解壓后的harbor目錄到/data/app/,因為/data分區(qū)是劃分出來的
mv harbor /data/app/
(3)編輯vi harbor.cfg文件
cd /data/app/harbor
cp harbor.cfg harbor.cfg.bak
vi harbor.cfg
內(nèi)容:
hostname = 192.168.1.79
ui_url_protocol = http
max_job_workers = 10
customize_crt = off
ssl_cert = /data/cert/server.crt
ssl_cert_key = /data/cert/server.key
secretkey_path = /data
admiral_url = NA
log_rotate_count = 50
log_rotate_size = 200M
http_proxy =
https_proxy =
no_proxy = 127.0.0.1,localhost,ui,registry
email_identity =
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
email_insecure = false
harbor_admin_password = *******
auth_mode = ldap_auth
self_registration = off
token_expiration = 60
project_creation_restriction = everyone
db_host = postgresql
db_password = root123
db_port = 5432
db_user = postgres
redis_host = redis
redis_port = 6379
redis_password =
redis_db_index = 1,2,3
clair_db_host = postgresql
clair_db_password = root123
clair_db_port = 5432
clair_db_username = postgres
clair_db = postgres
clair_updaters_interval = 12
uaa_endpoint = uaa.mydomain.org
uaa_clientid = id
uaa_clientsecret = secret
uaa_verify_cert = true
uaa_ca_cert = /path/to/ca.pem
registry_storage_provider_name = filesystem
registry_storage_provider_config =
registry_custom_ca_bundle =
解釋:
原來沒注釋的參數(shù)不要注釋掉,否則下邊一步不通過。留默認即可
hostname:配置主機名稱,不可以設置127.0.0.1,localhost這樣的主機名,可以是IP或者域名
ui_url_protocol:指定使用HTTP協(xié)議還是HTTPS協(xié)議
Email settings:郵箱設置,option配置,只在首次啟動生效,可以登陸UI后修改
harbor_admin_password:設置管理員的初始密碼,只在第一次登錄時使用
auth_mode:用戶認證模式,默認是db_auth,也可以使用ldap_auth驗證。
db_password:使用db需要指定連接數(shù)據(jù)庫的密碼
self_registration:是否允許自行注冊用戶,默認是on,新版本可以在圖形界面中修改。
max_job_workers:最大工作數(shù),默認是10個
customize_crt:是否為token生成證書,默認為on
ssl_cert:nginx cert與key文件的路徑, 只有采用https協(xié)議是才有意義
ssl_cert:nginx cert與key文件的路徑, 只有采用https協(xié)議是才有意義
secretkey_path:The path of secretkey storage
admiral_url:Admiral's url, comment this attribute, or set its value to NA when Harbor is standalone
clair_db_password:未啟用calir服務,但解壓目錄下的"./prepare"文件中要檢查以下相關參數(shù)配置,不能注釋,否則環(huán)境準備檢查不能通過,報"ConfigParser.NoOptionError: No option u'clair_db_password' in section: u'configuration' "相關錯誤;或者在"./prepare"中注釋相關檢查與定義,但需要注意,文件中的關聯(lián)太多,推薦修改"harbor.cfg"文件即可
ldap_url:ladp相關設置,如未采用ldap認證,但解壓目錄下的"./prepare"文件中要檢查以下相關參數(shù)配置,不能注釋,否則環(huán)境準備檢查不能通過,報"ConfigParser.NoOptionError: No option u'ldap_timeout' in section: u'configuration' "相關錯誤;或者在"./prepare"中注釋相關檢查與定義,但需要注意,文件中的關聯(lián)太多,推薦修改"harbor.cfg"文件即可
ldap_scope:
self_registration:默認開啟自注冊,off為關閉
token_expiration:token有效時間,默認30minutes
project_creation_restriction:創(chuàng)建項目權限控制,默認是"everyone"(所有人),可設置為"adminonly"(管理員)
verify_remote_cert:與遠程registry通信時是否采用驗證ssl
其他使用默認值
(4)確認無誤后,使用./install.sh命令開始安裝
4、啟動和停止(必須在docker-compose.yml目錄下運行命令,如/data/app/Harbor目錄)
停止Harbor
docker-compose stop
啟動Harbor
docker-compose start
5、登錄測試
http://192.168.1.79
初始密碼:admin/Harbor12345
登錄后的頁面
使用普通用戶登錄后創(chuàng)建一個新項目
項目名稱:sonarqube-xywg
創(chuàng)建完畢
6、上傳鏡像
在需要上傳鏡像的服務器上修改docker倉庫連接方式為http,否則默認https無法連接。這里以192.168.1.155上我修改的sonarqube鏡像為例
vi /etc/docker/daemon.json
加入
{
"insecure-registries" : ["192.168.1.79"]
}
重啟Docker生效
systemctl restart docker
重啟Docker之前記得先停止所有容器,如果忘了停止容器,則在重啟完Docker后使用docker restart <CONTAINER ID>命令啟動容器,不要docker rm <CONTAINER ID>,否則容器修改的內(nèi)容都被刪除了
再次登錄試試
docker login 192.168.1.79
開始上傳操作
docker commit -m 'xywg' 4da3dcf3c046 sonarqube-xywg
docker tag sonarqube-xywg 192.168.1.79/operation/sonarqube-xywg
docker push 192.168.1.79/operation/sonarqube-xywg
特別舉例:將Python官方dokcer鏡像上傳到本地倉庫
docker tag docker.io/python:3.7.2 192.168.1.79/public/python:3.7.2
docker push 192.168.1.79/public/python:3.7.2
解釋:
docker commit -m 鏡像信息 <CONTAINER ID> 新鏡像名[:版本號等tag標簽]
#從現(xiàn)有容器中生成新鏡像
docker tag 源鏡像名[:版本號等tag標簽] Docker倉庫Host/項目名/目標鏡像名[:版本號等tag標簽]
#改變鏡像標簽,標記本地鏡像是已經(jīng)被歸入Docker倉庫的鏡像??梢栽赿ocker commi的時候直接標記為Docker倉庫的鏡像
docker push 鏡像名[:版本號等tag標簽] #將本地的鏡像上傳到鏡像倉庫,注意每次push前需docker login 192.168.1.79確認是否已經(jīng)登錄了私有倉庫,push后需docker logout 192.168.1.79登出私有倉庫。如果push到公共項目必須登錄admin賬號才可以,如果用了非admin賬戶push到公共項目會出如下錯誤:denied: requested access to the resource is denied
不指定版本號等tag標簽時,Docker會自動幫我們補上latest的tag。這個latest其實在使用中不是最新的意思,而是默認值(defalut)的意思。
執(zhí)行結果:
進入Harbor的項目中查看
查看已上傳的sonarqube鏡像
PS:Harbor有分級概念:
(1)最上邊是項目(項目名):實際操作中按照每個不同的項目名稱來建項目,交由不同項目的負責人維護
(2)接下來是項目中的鏡像倉庫(鏡像名):鏡像倉庫中的鏡像名按照項目名或者jar包war名來命名,但要求命名一次不能隨意更改
(3)最后是倉庫中不同版本的鏡像(tag版本標簽):必須標明版本號,不能空或者用lastest(下圖lastest是演示)
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。