1、安裝方式
harbor有兩種安裝方式,一種是用docker-compose啟動官方打包好的離線安裝包; 二是用helm chart的形式在k8s上來運行harbor,經過我們自己的實踐,helm chart安裝失敗了所以我們選擇了第一種方法離線安裝,而且你的harbor如果是安裝在k8s上的話,就會有一種很微妙的關系,k8s的鏡像是從harbor中拉取的,harbor又是搭載在k8s上的一旦其中一個出現問題,就會導致另外一個也出現問題,
2、前期準備
我們準備了一臺最小版的centos7.6服務器,開始安裝所需要的docker,docker-compose等,
①centos環境準備
#關閉防火墻: 或者阿里云開通安全組埠訪問
systemctl stop firewalld
systemctl disable firewalld
#關閉 selinux:
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
#關閉 swap:
swapoff -a #臨時
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久
#將橋接的 IPv4 流量傳遞到 iptables 的鏈:
# 修改 /etc/sysctl.conf
# 如果有配置,則修改
sed -i "s#^net.ipv4.ip_forward.*#net.ipv4.ip_forward=1#g" /etc/sysctl.conf
sed -i "s#^net.bridge.bridge-nf-call-ip6tables.*#net.bridge.bridge-nf-call-ip6tables=1#g" /etc/sysctl.conf
sed -i "s#^net.bridge.bridge-nf-call-iptables.*#net.bridge.bridge-nf-call-iptables=1#g" /etc/sysctl.conf
sed -i "s#^net.ipv6.conf.all.disable_ipv6.*#net.ipv6.conf.all.disable_ipv6=1#g" /etc/sysctl.conf
sed -i "s#^net.ipv6.conf.default.disable_ipv6.*#net.ipv6.conf.default.disable_ipv6=1#g" /etc/sysctl.conf
sed -i "s#^net.ipv6.conf.lo.disable_ipv6.*#net.ipv6.conf.lo.disable_ipv6=1#g" /etc/sysctl.conf
sed -i "s#^net.ipv6.conf.all.forwarding.*#net.ipv6.conf.all.forwarding=1#g" /etc/sysctl.conf
# 可能沒有,追加
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.lo.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.conf
# 執行命令以應用
sysctl -p
②安裝docker:
#1、安裝docker
##1.1、卸載舊版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
##1.2、安裝基礎依賴
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
##1.3、配置docker yum源
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
##1.4、安裝并啟動 docker
yum install -y docker-ce-19.03.8 docker-ce-cli-19.03.8 containerd.io
systemctl enable docker
systemctl start docker
##1.5、配置docker加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://t1gbabbr.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
③安裝python環境
yum install python-setuptools gcc python-devel -y
④安裝openssl,我這里自帶了,就沒裝,
⑤安裝docker-compose
在docker-compose的官網找到linux的安裝教程如下:

運行如下命令下載并安裝當前穩定版本的 Docker-compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
查看安裝好后的版本
docker-compose --version
3、開始安裝
①下載安裝包
首先我重新啟動了
一臺服務器用來安裝harbor
## 創建目錄及下載harbor離線包
mkdir /data && cd /data
wget https://github.com/goharbor/harbor/releases/download/v2.2.0/harbor-offline-installer-v2.2.0.tgz
tar xf harbor-offline-installer-v2.2.0.tgz && rm harbor-offline-installer-v2.2.0.tgz
第一行命令創建data檔案夾來存盤harbor的所有目錄檔案,這個data僅供harbor使用,第二行下載harbor安裝包,第三行解壓,在解壓完成過后,會詢問你是否洗掉安裝包輸入y洗掉即可,
![]()
②修改配置
cd harbor
cp harbor.yml.tmpl harbor.yml
5 hostname: *********
17 certificate: /data/harbor/ssl/tls.cert
18 private_key: /data/harbor/ssl/tls.key
34 harbor_admin_password: *******
第一步我們進到harbor檔案夾,復制harbor.yml.tmpl為harbor.yml,然后修改其中的配置,要修改配置的地方我都寫出來了,hostname最好使用域名,但是要是沒有域名也可以使用ip地址,一定要記住修改默認密碼不然會有安全隱患,
③創建harbor訪問域名證書
mkdir /data/harbor/ssl && cd /data/harbor/ssl
openssl genrsa -out tls.key 2048
openssl req -new -x509 -key tls.key -out tls.cert -days 360 -subj /CN=*********
第一步創建ssl檔案夾用來存盤證書,第二步生成key,最后一步使用生成的key自簽證書,
days后面是你自簽證書的有效時間可以自行修改,'CN='后面就寫你自己的IP地址或者你自己的域名,
生成完成之后顯示如下

故harbor.yml中certificate填寫為如上tls.cert的檔案目錄地址:/data/harbor/ssl/tls.cert
故harbor.yml中private_key填寫為如上tls.key的檔案目錄地址:/data/harbor/ssl/tls.key
④開始安裝
第一步進到harbor檔案夾下,然后就可以用以下命令開始安裝,
./install.sh
出現以下界面,就說明你已經安裝成功了!

⑤除錯檢測
第一步:輸入以下命令檢查組件是否運行,
docker-compose ps
全部狀態都是healthy說明已經安裝成功,

第二步:如果你的harbor網址是使用域名的話,那么在你的電腦上配置本地host,在C:\windows\System32\drivers\etc\hosts中添加你自己的域名,
格式為:harbor安裝的服務器地址(空格)域名或者IP地址,這樣配置過后就可以在網頁中直接打開harbor頁面

輸入賬號密碼登錄即可,

第三步:嘗試上傳鏡像,首先在另外一臺服務器上添加本地hosts
echo '10.0.1.204 harbor.boge.com' >> /etc/hosts
因為我們的證書是自簽的是不受到其他機器信任的,所以我們要在我們要使用harbor的服務器上放上我們的證書,才能調度上面的pod,才能拉取鏡像,使用下面的代碼,在要使用harbor的服務器上保存證書,其中*的部分使用你自己的域名或者是IP地址,
mkdir -p /etc/docker/certs.d/*********
scp 10.0.1.204:/data/harbor/ssl/tls.cert /etc/docker/certs.d/***********/ca.crt
然后使用如下陳述句登錄harbor,如果沒有使用80埠一定要用IP地址加上你的埠號,冒號之后填埠號,查看自己harbor.yml里http或https里的埠詳情,
docker login ********:******
然后嘗試ping 你的網頁看時候能夠ping通,可以ping同就下一步,尋找一個鏡像上傳,
最后我們使用docker tag陳述句給本地鏡像重命名,然后按照以下格式上傳,其中星號部分是你的域名或者IP地址,注意注意注意!如果你沒有使用80埠要在你的IP地址之后加上你的埠號不然會上傳不上去,至于怎么查看你的埠,在你的harbor服務器的harbor檔案夾下有我們之前的組態檔harbor.yml,打開在里面會有,如下圖所示
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 *************:****/library/pause:3.1

第四步,當我們嘗試docker login時,遇到了如下錯誤:

經反復搜資料得知,要在使用harbor的服務器(我們這里使用harbor的服務器是k8s的master節點,要上傳鏡像至harbor)上修改docker.service,
vim /usr/lib/systemd/system/docker.service
注釋掉原本的這一段:ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
添加如下的代碼:
ExecStart=/usr/bin/dockerd --insecure-registry https://192.168.76.131:4430
修改完畢后顯示如下 
⑥登錄成功
修改完畢后再次嘗試登錄,docker login harbor的ip+埠,如下就是登陸成功,

最后就是上傳鏡像,使用docker push如下
![]()
最后一步:檢查鏡像, 我們在harbor的library中檢查我們的鏡像是否上傳成功,

可以看到上傳成功!
至此Harbor的安裝與測驗就大功告成了!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/293452.html
標籤:其他
上一篇:yum本地源安裝時因為依賴包版本不一致導致無法安裝成功的報錯
下一篇:Enter passphrase for key ‘/c/Users/**/.ssh/id_rsa‘ 解決辦法!
