Docker倉庫之分布式Harbor


1.Harbor的介紹

1.Docker registry和Harbor的區別

Habor是由VMWare公司開源的容器鏡像倉庫。事實上,Habor是在Docker Registry上進行了相應的企業級擴展(也就是二次開發,底層是Registry),從而獲得了更加廣泛的應用,這些新的企業級特性包括:管理用戶界面,基於角色的訪問控制 ,AD/LDAP集成以及審計日志等。
容器的核心在於鏡象的概念,由於可以將應用打包成鏡像,並快速的啟動和停止,因此容器成為新的炙手可熱的基礎設施CAAS,並為敏捷和持續交付包括DevOps提供底層的支持。

總結:Harbor以Docker公司開源的registry為基礎,額外提供了如下功能:

->  基於角色的訪問控制(Role Based Access Control)
->  基於策略的鏡像復制(Policy based image replication)

->  鏡像的漏洞掃描(Vulnerability Scanning)
->  AD/LDAP集成(LDAP/AD support)

->  鏡像的刪除和空間清理(Image deletion & garbage collection)
->  友好的管理UI(Graphical user portal)

->  審計日志(Audit logging)
->  RESTful API (可以理解成公共的標准接口)
->  部署簡單(Easy deployment)

Harbor的所有組件都在Dcoker中部署,所以Harbor可使用Docker Compose快速部署。需要特別注意:由於Harbor是基於Docker Registry V2版本,所以docker必須大於等於1.10.0版本docker-compose必須要大於1.6.0版本

2.Harbor倉庫結構

Harbor的每個組件都是以Docker容器的形式構建的,可以使用Docker Compose來進行部署。如果環境中使用了kubernetes,Harbor也提供了kubernetes的配置文件。Harbor大概需要以下幾個容器組成

ui(Harbor的核心服務)、

log(運行着rsyslog的容器,進行日志收集)、

mysql(由官方mysql鏡像構成的數據庫容器)、

Nginx(使用Nginx做反向代理)、

registry(官方的Docker registry)、

adminserver(Harbor的配置數據管理器)、

jobservice(Harbor的任務管理服務)、

redis(用於存儲session)。

 

Harbor依賴的外部組件

-> Nginx(即Proxy代理層) Nginx前端代理,主要用於分發前端頁面ui訪問和鏡像上傳和下載流量; Harbor的registry,UI,token等服務,通過一個前置的反向代理統一接收瀏覽器、Docker客戶端的請求,並將請求轉發給后端不同的服務。

 -> Registry v2: 鏡像倉庫,負責存儲鏡像文件; Docker官方鏡像倉庫, 負責儲存Docker鏡像,並處理docker push/pull命令。由於我們要對用戶進行訪問控制,即不同用戶對Docker image有不同的讀寫權限,Registry會指向一個token服務,強制用戶的每次docker pull/push請求都要攜帶一個合法的token, Registry會通過公鑰對token進行解密驗證。
-> Database(MySQL或Postgresql)為core services提供數據庫服務,負責儲存用戶權限、審計日志、Docker image分組信息等數據。

 

Harbor自有組件

-> Core services(Admin Server): 這是Harbor的核心功能,主要提供以下服務:

 

         -> UI:提供圖形化界面,幫助用戶管理registry上的鏡像(image), 並對用戶進行授權。

 

         -> webhook:為了及時獲取registry 上image狀態變化的情況, 在Registry上配置webhook,把狀態變化傳遞給UI模塊。

 

         -> Auth服務:負責根據用戶權限給每個docker push/pull命令簽發token. Docker 客戶端向Regiøstry服務發起的請求,如果不包含token,會被重定向到這里,獲得token后再重新向Registry進行請求。

 

         -> API: 提供Harbor RESTful API(一種統一發規范化請求接口)

 

-> Replication Job Service:提供多個 Harbor 實例之間的鏡像同步功能。

 

-> Log collector:為了幫助監控Harbor運行,負責收集其他組件的log,供日后進行分析

 

Harbor是一個用於存儲和分發Docker鏡像的企業級Registry服務器,通過上面的自有組件介紹,下面的結構還是比較清楚了。

 再來仔細看下Harbor主要組件和數據流走向:

 

 

 

-> proxy,它是一個nginx前端代理,主要是分發前端頁面ui訪問和鏡像上傳和下載流量,上圖中通過深藍色先標識;
-> ui提供了一個web管理頁面,當然還包括了一個前端頁面和后端API,底層使用mysql數據庫;
-> registry是鏡像倉庫,負責存儲鏡像文件,當鏡像上傳完畢后通過hook通知ui創建repository,上圖通過紅色線標識,當然registry的token認證也是通過ui組件完成;
-> adminserver是系統的配置管理中心附帶檢查存儲用量,ui和jobserver啟動時候回需要加載adminserver的配置,通過灰色線標識;
-> jobsevice是負責鏡像復制工作的,他和registry通信,從一個registry pull鏡像然后push到另一個registry,並記錄job_log,上圖通過紫色線標識;
-> log是日志匯總組件,通過docker的log-driver把日志匯總到一起,通過淺藍色線條標識。

 

 

3.Harbor的誤區

誤區一: Harbor是負責存儲容器鏡像的 (Harbor是鏡像倉庫,那么它就應當是存儲鏡像的)
其實關於鏡像的存儲,Harbor使用的是官方的docker registry服務去完成,至於registry是用本地存儲或者s3都是可以的,Harbor的功能是在此之上提供用戶權限管理、鏡像復制等功能,提高使用的registry的效率。

誤區二:Harbor鏡像復制是存儲直接復制 (鏡像的復制,很多人以為應該是鏡像分層文件的直接拷貝)
其實Harbor鏡像復制采用了一個更加通用、高屋建瓴的做法,通過docker registry 的API去拷貝,這不是省事,這種做法屏蔽了繁瑣的底層文件操作、不僅可以利用現有docker registry功能不必重復造輪子,而且可以解決沖突和一致性的問題。

 

2.Harbor倉庫環境的部署

1.建議配置

Harbor倉庫部署的官方要求的最小系統配置
-> 2個cpu
-> 4g內存
-> 40g硬盤,因為是存儲鏡像的所以推薦硬盤大點。

 

2.環境要求和准備工作

Harbor以容器的形式進行部署, 因此可以被部署到任何支持Docker的Linux發行版, 要使用Harbor,需要安裝docker和docker-compose編排工具,並且具備如下環境:
Python2.7+    (centos7自帶的python版本就是2.7.5)
Docker Engine 1.10+
Docker Compose 1.6.0+
系統版本在Centos7.5以上
ip_forward路由轉發功能要打開

 

Docker 18.09.1 及以上的版本,系統內核版本需要升級到4.4.x,原因如下

1)CentOS 7.x 系統自帶的3.10.x內核存在一些Bugs,導致運行的Docker、Kubernetes不穩定。
2)高版本的 docker(1.13 以后) 啟用了3.10 kernel實驗支持的kernel memory account功能(無法關閉),當docker節點壓力大 (如頻繁啟動和停止容器) 時會導致 cgroup memory leak;
3)Docker 18.09.1 及以上的版本,需要手動升級內核到 4.4.X 以上;

內核升級步驟如下:

[root@manager-node1 ~]# uname -r
3.10.0-957.el7.x86_64
#要在 CentOS 7 上啟用 ELRepo 倉庫,注意這里最好DNS用谷歌的。不然可能會報網絡問題。
[root@manager-node1 ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
#安裝完成后檢查 /boot/grub2/grub.cfg 中對應內核 menuentry 中是否包含 initrd16 配置,如果沒有,再安裝一次!
[root@manager-node1 ~]# cat /boot/grub2/grub.cfg |grep initrd16
    initrd16 /initramfs-3.10.0-1160.11.1.el7.x86_64.img
    initrd16 /initramfs-3.10.0-957.el7.x86_64.img
    initrd16 /initramfs-0-rescue-187831681d0c49d3b33d1629cd34429f.img
#這里需要注意的是,在 ELRepo 中有兩個內核選項,一個是 kernel-lt(長期支持版本),一個是 kernel-ml(主線最新版本),采用長期支持版本(kernel-lt),更穩定一些
[root@manager-node1 ~]# yum --enablerepo=elrepo-kernel install -y kernel-lt
#設置開機從新內核啟動
[root@manager-node1 ~]# grub2-set-default 0 #重啟后檢查。
[root@manager-node1 ~]# init 6
[root@manager-node1 ~]# uname -r
4.4.248-1.el7.elrepo.x86_64

docker和docker-compose的安裝這里就不演示了,可以參考我其它文章。

環境的檢查和補充

[root@manager-node1 ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 
[root@manager-node1 ~]# uname -r
4.4.248-1.el7.elrepo.x86_64
#開啟路由轉發
[root@manager
-node1 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward [root@manager-node1 ~]# vim /etc/sysctl.conf net.ipv4.ip_forward = 1 #關閉防火牆,並檢查
[root@manager
-node1 ~]# systemctl stop firewalld && systemctl disable firewalld && firewall-cmd --state not running [root@manager-node1 ~]# vim /etc/sysconfig/selinux SELINUX=disabled [root@manager-node1 ~]# getenforce Disabled #檢查python版本
[root@manager
-node1 ~]# python --version Python 2.7.5
#檢查docker版本
[root@manager-node1 ~]# docker --version Docker version 20.10.1, build 831ebea
#檢查docker-compose版本
[root@manager-node1 ~]# docker-compose --version
docker-compose version 1.27.4, build 40524192

 

3.HTTPS證書自簽

如果線上環境有已購買好的HTTPS證書可以直接拿過來用,如果沒有,就在Harbor本機進行HTTPS證書自簽。這里Harbor本機ip地址是192.168.195.166

#生成CA證書私鑰
[root@manager-node1 ~]# openssl genrsa -out ca.key 4096 #生成CA證書
[root@manager
-node1 ~]# openssl req -x509 -new -nodes -sha512 -days 3650 \ > -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.168.195.166" \ > -key ca.key \ > -out ca.crt
生成服務器證書
1.生成私鑰
[root@manager
-node1 ~]# openssl genrsa -out 192.168.195.166.key 4096 2.生成證書簽名請求(CSR)
[root@manager
-node1 ~]# openssl req -sha512 -new \ > -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.168.195.166" \ > -key 192.168.195.166.key \ > -out 192.168.195.166.csr 3.生成一個x509 v3擴展文件(兩種方式根據情況二選一) #################################################################################### 第一種方式:域名 cat > v3.ext <<-EOF authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1=172.16.60.238 DNS.2=yourdomain DNS.3=hostname EOF #################################################################################### 第二種方式:IP cat > v3.ext <<-EOF authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = IP:172.16.60.238 EOF #################################################################################### #我們這里選擇第二種的IP方式 [root@manager-node1 ~]# openssl req -sha512 -new \ > -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.168.195.166" \ > -key 192.168.195.166.key \ > -out 192.168.195.166.csr [root@manager-node1 ~]# cat > v3.ext <<-EOF > authorityKeyIdentifier=keyid,issuer > basicConstraints=CA:FALSE > keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment > extendedKeyUsage = serverAuth > subjectAltName = IP:192.168.195.166 > EOF 4.使用該v3.ext文件為您的Harbor主機生成證書 [root@manager-node1 ~]# openssl x509 -req -sha512 -days 3650 \ > -extfile v3.ext \ > -CA ca.crt -CAkey ca.key -CAcreateserial \ > -in 192.168.195.166.csr \ > -out 192.168.195.166.crt Signature ok subject=/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.168.195.166 Getting CA Private Key

 

4.提供證書給Harbor和Docker

1.將服務器證書和密鑰復制到Harbor主機上的certficates文件夾中,根據自己實際環境需求創建Harbor的certficates文件夾
[root@manager-node1 ~]# mkdir -p /data/cert/
[root@manager-node1 ~]# cp 192.168.195.166.crt /data/cert/
[root@manager-node1 ~]# cp 192.168.195.166.key /data/cert/ 2.轉換 192.168.195.166.crt 為192.168.195.166.cert,供Docker使用。
[root@manager
-node1 ~]# openssl x509 -inform PEM -in 192.168.195.166.crt -out 192.168.195.166.cert 3.將服務器證書,密鑰和CA文件復制到Harbor主機上的Docker certificate文件夾中。記住必須首先創建適當的文件夾
[root@manager
-node1 ~]# mkdir -p /etc/docker/certs.d/192.168.195.166/ [root@manager-node1 ~]# cp 192.168.195.166.cert /etc/docker/certs.d/192.168.195.166/ [root@manager-node1 ~]# cp 192.168.195.166.key /etc/docker/certs.d/192.168.195.166/ [root@manager-node1 ~]# cp ca.crt /etc/docker/certs.d/192.168.195.166/ 4.重啟Docker
[root@manager
-node1 ~]# systemctl restart docker [root@manager-node1 ~]# systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since Mon 2020-12-28 03:52:18 CST; 6s ago Docs: https://docs.docker.com Main PID: 10538 (dockerd) Tasks: 12 Memory: 46.6M CGroup: /system.slice/docker.service └─10538 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 5.將名為"ca.crt"的CA證書下載到本地電腦,然后安裝證書。 這樣就可以在本地電腦的瀏覽器里正常訪問https地址的Harbor了(證書可被信任)

 

5.安裝Harbor

到 Harbor的GitHub倉庫的Release頁面 , 下載最新的安裝包,安裝包分為在線版,和離線版本,兩個版本的區別就是離線版把需要的依賴都提前打到一個包里去了,在線版本就是在安裝的時候去拉依賴。安裝前的配置都是一樣的。下面演示的是在線版。

#這里下載Harbor v2.1.2版本的在線安裝包
[root@manager-node1 ~]# cd /usr/local/src/
[root@manager-node1 src]# wget https://github.com/goharbor/harbor/releases/download/v2.1.2/harbor-online-installer-v2.1.2.tgz
#上面下載的是在線版安裝包,很小,如果想要下載離線版本的,地址如下。
https://github.com/goharbor/harbor/releases/download/v2.1.2/harbor-offline-installer-v2.1.2.tgz
[root@manager-node1 src]# tar -zvxf harbor-online-installer-v2.1.2.tgz [root@manager-node1 src]# mv harbor /opt/ #修改harbor安裝的配置文件
[root@manager
-node1 src]# cd /opt/harbor/ [root@manager-node1 harbor]# cp harbor.yml.tmpl harbor.yml [root@manager-node1 harbor]# vim harbor.yml
#主要修改參數如下:
.........
 
         
........
 
         
hostname : 192.168.195.166      //需要寫IP地址或者域名 
 
         
# http related config
 
         
http:
 
         
   # port for http, default is 80. If https enabled, this port will redirect to https port
 
         
   port: 80
 
         
  
 
         
#https配置(如不需要可不配置),因為我們上面進行了https證書自簽,所以需要進行如下配置
# https related config
 
         
https:
 
         
   # https port for harbor, default is 443
 
         
   port: 443
 
         
   # The path of cert and key files for nginx
 
         
   certificate: /data/cert/192.168.195.166.crt
 
         
   private_key: /data/cert/192.168.195.166.key
 
         
........
 
         
........
 
         
harbor_admin_password: Harbor@123456    #harbor初始管理員密碼為Harbor12345, 這里最好修改成自己的密碼,默認密碼至少8位,最好是大小寫、數字和特殊字符。
 
         
........
 
         
........
 
         
data_volume: /data        ##持久化數據目錄

#
運行install.sh, 注意運行時加上--with-clair 選項,啟動clair鏡像掃描功能
[root@manager-node1 harbor]# ./install.sh --with-clair
✔ ----Harbor has been installed and started successfully.----
#出現上面的信息,說明Harbor已經安裝完成了。查看harbor啟動情況。docker-compose 命令必須要在harbor安裝目錄
(這里就是
/opt/harbor)路徑下才能執行。
[root@manager-node1 harbor]# docker-compose ps
      Name                     Command                  State                    Ports             
---------------------------------------------------------------------------------------------------
clair               ./docker-entrypoint.sh           Up (healthy)                                  
clair-adapter       /home/clair-adapter/entryp ...   Up (healthy)                                  
harbor-core         /harbor/entrypoint.sh            Up (healthy)                                  
harbor-db           /docker-entrypoint.sh            Up (healthy)                                  
harbor-jobservice   /harbor/entrypoint.sh            Up (healthy)                                  
harbor-log          /bin/sh -c /usr/local/bin/ ...   Up (healthy)   127.0.0.1:1514->10514/tcp      
harbor-portal       nginx -g daemon off;             Up (healthy)                                  
nginx               nginx -g daemon off;             Up (healthy)   0.0.0.0:80->8080/tcp,          
                                                                    0.0.0.0:443->8443/tcp          
redis               redis-server /etc/redis.conf     Up (healthy)                                  
registry            /home/harbor/entrypoint.sh       Up (healthy)                                  
registryctl         /home/harbor/start.sh            Up (healthy)
#查看harbor鏡像
[root@manager-node1 harbor]# docker images
REPOSITORY                      TAG       IMAGE ID       CREATED       SIZE
goharbor/redis-photon           v2.1.2    ab361cc80013   2 weeks ago   68.8MB
goharbor/clair-adapter-photon   v2.1.2    b43551e703c2   2 weeks ago   58MB
goharbor/clair-photon           v2.1.2    0e9f86b78780   2 weeks ago   168MB
goharbor/harbor-registryctl     v2.1.2    da26ae6a8d51   2 weeks ago   132MB
goharbor/registry-photon        v2.1.2    417d60a20a94   2 weeks ago   80.1MB
goharbor/nginx-photon           v2.1.2    f9ea32db995f   2 weeks ago   40.1MB
goharbor/harbor-log             v2.1.2    7514c453345e   2 weeks ago   106MB
goharbor/harbor-jobservice      v2.1.2    123382c0d590   2 weeks ago   169MB
goharbor/harbor-core            v2.1.2    46211d9a0f44   2 weeks ago   150MB
goharbor/harbor-portal          v2.1.2    6eedd3daad4c   2 weeks ago   49.5MB
goharbor/harbor-db              v2.1.2    f0c14faef5d5   2 weeks ago   172MB
goharbor/prepare                v2.1.2    cc5f5219b08b   2 weeks ago   161MB
#確保harbpr啟動后的80和443端口都起來了
[root@manager-node1 harbor]# lsof -i:80
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 15359 root    4u  IPv6  80740      0t0  TCP *:http (LISTEN)
[root@manager-node1 harbor]# lsof -i:443
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 15345 root    4u  IPv6  80711      0t0  TCP *:https (LISTEN)

 3.Harbor的使用

1.web界面的介紹和使用

到這里就可以訪問harbor了,訪問地址為:https: //192.168.195.166
用戶名為admin,密碼為配置文件中定義的 "Harbor@123456"

 

 

 harbor的用法概念和我們在Gitlab上的用法概念差不多。

首先在Harbor web界面里最好創建一個自己需要的"項目" (或者使用默認的"library"項目),項目公開和私有:
Public: 任何人對於公開項目都有讀權限,這種方式對於你想把一些倉庫分享給其他人的時候,是非常方便的.
Private: 私有項目只能被有特定用戶權限的人去訪問。這種方式對於內部團隊來說共享也是比較方便的

比如創建一個私有項目"test-Harbor",點擊進去可以看到推送鏡像的信息提示

 

 

 

 

 

 

 

 

 

 

 

 

2.Harbor鏡像的推送和下載

這里我們就可以在Harbor服務器的終端命令行里到Harbor倉庫進行鏡像的推送和拉取操作了:

harbor本地服務器登錄

在進行harbor鏡像推送和拉取操作前,需要事先login登錄到harbor倉庫里,這樣才有harbor鏡像的推送和拉取的權限!!

#因為docker1.3.2版本開始默認docker registry使用的是https,而Harbor默認設置的是http方式而不是https,所以當執行用docker login、pull、push等
命令操作非https的docker regsitry的時就會報如下錯誤
[root@centos-test-no ~]# docker login 172.31.46.28 Username: test1 Password: Error response from daemon: Get https://172.31.46.28/v2/: x509: certificate signed by unknown authority
#為了解決上面問題,/etc/docker/daemon.json文件里添加"insecure-registries"配置,(如果還不行,可以嘗試將下面添加的地址由"172.31.46.28"改為"http://172.31.46.28"),
注意daemon.json配置文件兩行之間有一個","逗號隔開
[root@centos-test-no ~]# vim /etc/docker/daemon.json 
[root@centos-test-no ~]# cat /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://9l7fbd59.mirror.aliyuncs.com"],
  "insecure-registries": ["172.31.46.28"]
}
#修改完之后,重啟docker,注意如果harbor本地服務器登錄遇到上面問題的話,還需要重啟harbor服務 [root@centos
-test-no ~]# systemctl restart docker #最后驗證測試登錄 [root@centos-test-no ~]# docker login 172.31.46.28 Username: test1 Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded
#登錄的賬號信息都保存到/root/.docker/config.json文件里了
 
         
[root@harbor-node harbor] # cat /root/.docker/config.json
 
         
{
 
         
         "auths" : {
 
         
                 "172.16.60.213" : {
 
         
                         "auth" : "YWRtaW46a2V2aW5AQk8xOTg3"
 
         
                 }
 
         
         },
 
         
         "HttpHeaders" : {
 
         
                 "User-Agent" : "Docker-Client/18.09.6 (linux)"
 
         
         }
 
         
  
 
         
#只要/root/.docker/config.json里的信息不刪除,后續再次登錄的時候,就不用輸入用戶名和密碼了
 
         
[root@harbor-node ~] # docker login 172.16.60.213
 
         
Authenticating with existing credentials...
 
         
WARNING! Your password will be stored unencrypted in /root/ .docker /config .json.
 
         
Configure a credential helper to remove this warning. See
 
         
https: //docs .docker.com /engine/reference/commandline/login/ #credentials-store
 
         
  
 
         
Login Succeeded
 

鏡像的推送

#查看本機有哪些鏡像
[root@centos-test-no ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest ae2feff98a0c 2 weeks ago 133MB centos latest 300e315adb2f 3 weeks ago 209MB #在本機中標記鏡像,這里我把本機的nginx鏡像標記為nginx:test。准備上傳到Harbor
[root@centos
-test-no ~]# docker tag nginx:latest 172.31.46.28/test-harbor/nginx:test #推送標記好鏡像到當前Harbor上。
[root@centos
-test-no ~]# docker push 172.31.46.28/test-harbor/nginx:test The push refers to repository [172.31.46.28/test-harbor/nginx] 4eaf0ea085df: Pushed 2c7498eef94a: Pushed 7d2b207c2679: Pushed 5c4e5adc71a8: Pushed 87c8a1d8f54f: Pushed test: digest: sha256:13e4551010728646aa7e1b1ac5313e04cf75d051fa441396832fcd6d600b5e71 size: 1362
#這個時候回頭看,發現本地鏡像庫中多了一個鏡像,這個鏡像是為了推送到harbor做的標簽鏡像,可以選擇刪除。

[root@centos-test-no ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
172.31.46.28/test-harbor/nginx test ae2feff98a0c 2 weeks ago 133MB
nginx latest ae2feff98a0c 2 weeks ago 133MB
centos latest 300e315adb2f 3 weeks ago 209MB

 

 

 

鏡像的下載

鏡像的下載和鏡像的上傳一樣,都要先進行驗證登錄。這里我就不做過多演示了,直接來看怎么從harbor進行鏡像的下載。

 

 

[root@manager-node2 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
centos       latest    300e315adb2f   3 weeks ago   209MB
[root@manager-node2 ~]# docker pull 192.168.195.166/test-harbor/nginx@sha256:13e4551010728646aa7e1b1ac5313e04cf75d051fa441396832fcd6d600b5e71 192.168.195.166/test-harbor/nginx@sha256:13e4551010728646aa7e1b1ac5313e04cf75d051fa441396832fcd6d600b5e71: Pulling from test-harbor/nginx
6ec7b7d162b2: Pull complete 
cb420a90068e: Pull complete 
2766c0bf2b07: Pull complete 
e05167b6a99d: Pull complete 
70ac9d795e79: Pull complete 
Digest: sha256:13e4551010728646aa7e1b1ac5313e04cf75d051fa441396832fcd6d600b5e71
Status: Downloaded newer image for 192.168.195.166/test-harbor/nginx@sha256:13e4551010728646aa7e1b1ac5313e04cf75d051fa441396832fcd6d600b5e71
192.168.195.166/test-harbor/nginx@sha256:13e4551010728646aa7e1b1ac5313e04cf75d051fa441396832fcd6d600b5e71
[root@manager-node2 ~]# docker images
REPOSITORY                          TAG       IMAGE ID       CREATED       SIZE
192.168.195.166/test-harbor/nginx   <none>    ae2feff98a0c   2 weeks ago   133MB
centos                              latest    300e315adb2f   3 weeks ago   209MB

 

3.Harbor的啟停以及配置生效

#harbor服務搭建成功后,默認會在安裝目錄下生成docker-compose.yml文件,通過這個文件harbor可以通過docker-compose進行服務的啟停
[root@manager-node1 harbor]# docker-compose start
[root@manager-node1 harbor]# docker-compose stop
#如果需要修改harbor的一些配置,最好配合上面的啟停中間加上下面的命令讓配置生效
[root@manager-node1 harbor]# ./prepare

 

4.Harbor的高可用

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM