幾個VMware中國的人搞了一個容器鏡像倉庫。
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把日誌彙總到一塊兒,經過淺藍色線條標識。node
基於角色的訪問控制--RBAC。用戶分爲三種角色:項目管理員(MDRWS)、開發人員(RWS)和訪客(RS),固然還有一個最高管理員權限admin系統管理員。
M:管理、D:刪除、R:讀取、W:寫入、S:查詢,很是細緻的權限管理體系。固然一個用戶能夠在不一樣的項目裏面扮演不一樣角色,這個和現實的用戶管理體系很是吻合。python
項目管理是系統最主要的一個功能模塊,項目是一組鏡像倉庫的邏輯集合,是權限管理和資源管理的單元劃分。一個項目下面有多個鏡像倉庫,而且關聯多個不一樣角色的成員,鏡像複製也是基於項目的,經過添加複製規則,能夠將項目下面的鏡像從一個harbor遷移到另外一個harbor,而且能夠經過日誌查看複製過程,並有retry機制。mysql
配置管理主要是配置harbor的認證模式,企業內部使用,一般都是對接到公司LDAP上面,固然harbor也支持數據庫認證;還能夠設置token的有效時間。用戶對鏡像的pull和push操做均可以被harbor記錄下來,這樣爲排查文件提供了重要手段。harbor還集成了clair鏡像掃描功能,它是cereos開發的一款漏洞掃描工具,能夠檢查鏡像操做系統以及上面安裝包是否與已知不安全的包版本相匹配,從而提升鏡像安全性。linux
經過三個harbor完成高可用部署,前面經過負載均衡器對外提供服務。共享數據庫與緩存。結構以下:nginx
本章節內容參考原文:https://blog.csdn.net/u010278923/article/details/77941995 git
若是須要詳細瞭解docker有他相關操做,請詳見《docker在Ubuntu下1小時快速學習》。如下操做步驟均在root用戶下操做,2個版本任選其一github
一、進入https://download.docker.com/linux/ubuntu/dists/頁面
二、在頁面中會看到ubuntu不一樣版本的代號,選擇本身對應的版本進入,這次安裝的是ubuntu16.04,所以選擇xenial鏈接進入web
三、而後一路選擇xenial/pool/stable/amd64/,stable是穩定版本,ubuntu須要的是amd64的軟件格式
四、在https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/頁面就能找打所須要的穩定版本dockersql
五、右鍵點擊在所須要的版本上,選擇複製鏈接地址,便可獲得下載地址路徑,以下:
https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb
一、檢查內核是否符合要求,Docker 要求 Ubuntu 系統的內核版本高於 3.10 ,建議在Ubuntu14.04版本
root@duke:/var/cache/apt/archives# uname -r
3.13.0-135-generic
二、安裝docker
root@duke:~/docker# wget https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb --2017-12-19 19:30:29-- https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb 正在解析主機 download.docker.com (download.docker.com)... 52.85.158.200, 52.85.158.223, 52.85.158.109, ... 正在鏈接 download.docker.com (download.docker.com)|52.85.158.200|:443... 已鏈接。 已發出 HTTP 請求,正在等待迴應... 200 OK 長度: 19183424 (18M) [application/x-debian-package] 正在保存至: 「docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb」 docker-ce_17.03.2~ce-0~ubuntu-xenial_ 100%[======================================================================>] 18.29M 26.0KB/s in 11m 35s 2017-12-19 19:42:05 (27.0 KB/s) - 已保存 「docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb」 [19183424/19183424]) root@duke:~/docker# dpkg -i docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb
三、啓動docker 後臺服務
root@duke: service docker start
start: Job is already running: docker
一、進入https://github.com/moby/moby/releases頁面
二、點擊按鈕,進入以頁面就能夠根據選擇選取版本
三、當前要選擇docker-ce_17.03.2~ce或者docker-1.13.1,所以通過翻頁後,找到對應版本,點擊進入頁面,找到downloads信息後,就能夠找ubuntu系統上進行下載
四、Docker的tgz包加壓後,並不能加載到系統服務中,因此不太推薦此種方式安裝,建議仍是採用deb包安裝方式,能夠省去沒必要要的麻煩
一、檢查內核是否符合要求,Docker 要求 Ubuntu 系統的內核版本高於 3.10 ,建議在Ubuntu14.04版本
root@duke:/var/cache/apt/archives# uname -r
3.13.0-135-generic
二、安裝docker
root@duke:~/docker# wget https://get.docker.com/builds/Linux/x86_64/docker-1.13.1.tgz
--2017-12-20 13:57:23-- https://get.docker.com/builds/Linux/x86_64/docker-1.13.1.tgz
正在解析主機 get.docker.com (get.docker.com)... 54.182.1.40, 54.182.1.36, 54.182.1.148, ...
正在鏈接 get.docker.com (get.docker.com)|54.182.1.40|:443... 已鏈接。
已發出 HTTP 請求,正在等待迴應... 200 OK
長度: 27851024 (27M) [application/x-tar]
正在保存至: 「docker-1.13.1.tgz」
docker-1.13.1.tgz 100%[======================================================================>] 26.56M 56.1KB/s in 9m 35s
2017-12-20 14:07:00 (47.3 KB/s) - 已保存 「docker-1.13.1.tgz」 [27851024/27851024])
如下操做步驟均在root用戶下操做,2個方法任選其一
一、運行如下命令下載最新版本的docker-compose並進行安裝
curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
二、更改二進制文件的權限,使其可以運行
chmod +x /usr/local/bin/docker-compose
三、測試安裝
docker-compose --version
一、安裝python源
apt-get update apt-get install python-pip
二、刪除老版docker-compose
pip uninstall docker-compose
三、安裝docker-compose
pip install docker-compose
四、測試安裝
docker-compose --vesion
資源 | 配置 | 描述 |
---|---|---|
CPU | 最少 2 CPU | 4CPU(推薦) |
內存 | 最少 4GB | 8GB(推薦) |
磁盤 | * | * |
軟件名 | 版本 |
|
---|---|---|
Python | 2.7或更高版本 | 注意: 你可能必須在Linux發行版(Gentoo,Arch)上安裝Python,默認狀況下沒有安裝Python解釋器 |
Docker | 1.10或更高版本 | 有關安裝說明,請參考: https://docs.docker.com/engine/installation/ |
Docker-Compose | 1.6.0或更高版本 | 有關安裝說明,請參考: https://docs.docker.com/compose/install/ |
Openssl | 推薦最新版本 | 爲Harbor生成證書和密鑰 |
端口 | 協議 |
|
---|---|---|
443 | HTTPS | Harbor UI和API將接受此端口上的https協議請求 |
4443 | HTTPS | 只有在啓用Notary時才須要鏈接到Docker Content Trust服務 |
80 | HTTP | Harbor UI和API將接受此端口上的http協議請求 |
官方本獲取頁面,點擊下載
版本分爲在線安裝板和離線安裝版本,根據需求選擇對應版本下載便可。
在線版本和離線版本安裝方法同樣,本文以離線安裝爲主。
tar xvf harbor-offline-installer-v1.7.0-rc2.tgz
解壓壓縮包會獲得harbor文件夾,harbor.cfg配置文件位於文件夾根目錄。在harbor.cfg中有兩類參數,必需參數和可選參數。
參數 |
|
---|---|
必要參數 | 須要在配置文件中設置這些參數。若是用戶更新harbor.cfg並運行install.sh腳本以從新安裝Harbor,更改的參數將生效。 |
可選參數 | 這些參數對於更新是可選的,即用戶能夠將它們保留爲默認值,並在啓動Harbour後在Web UI上更新它們。若是已經配置harbor.cfg,這些參數只會在首次啓動Harbour時生效。harbor.cfg將忽略對這些參數的後續修改。 |
必要參數
參數名 |
|
---|---|
hostname | 目標主機的主機名,用於訪問UI和Harbor服務。它應該是目標計算機的IP地址或域名(FQDN),例如,192.168.1.10或reg.yourdomain.com。不要使用localhost或127.0.0.1做爲主機名,由於外部客戶端須要訪問Harbor服務! |
ui_url_protocol | ( http或https。默認爲http)用於訪問UI和令牌/通知服務的協議。若是啓用了公證,則此參數必須爲https。默認狀況下,這是http。要設置https協議,請參閱使用HTTPS訪問配置Harbor。 |
db_password | 用於db_auth的MySQL數據庫的root密碼。生產環境請修改此密碼 |
max_job_workers | (默認值爲3)做業服務中的最大複製工做數。對於每一個鏡像複製做業,程序將存儲庫的全部標記同步到遠程目標。增長此數量能夠在系統中實現更多併發複製做業。可是,因爲每一個複製進程都消耗必定的網絡/CPU/IO資源,請根據主機的硬件資源仔細選擇該參數的值。 |
customize_crt | (on或off,默認爲on),若是此屬性on,準備腳本建立私鑰和根證書,用於生成/驗證registry的令牌。當外部源提供密鑰和根證書時,將此屬性設置爲off。有關詳細信息,請參閱自定義密鑰和harbor令牌服務證書。 |
ssl_cert | SSL證書的路徑,僅在協議設置爲https時應用 |
ssl_cert_key | SSL密鑰的路徑,僅在協議設置爲https時應用 |
secretkey_path | 用於加密或解密複製策略中遠程Harbor密碼的密鑰路徑。 |
log_rotate_count | 日誌文件在被刪除以前會被輪轉log_rotate_count次。若是count爲0,則刪除舊版本而不是輪轉。 |
log_rotate_size | 僅當日志文件大於log_rotate_size字節時纔會輪轉日誌文件。若是大小後跟k,則假定大小以千字節爲單位。若是使用M,則大小以兆字節爲單位,若是使用G,則大小爲千兆字節。尺寸100,尺寸100k,尺寸100M和尺寸100G都是有效的。 |
可選參數
參數名 |
|
---|---|
Email settings | Harbor須要這些參數才能向用戶發送「密碼重置」電子郵件,而且僅在須要該功能時才作配置。另外,請注意,在默認狀況下SSL鏈接沒有啓用,若是你的SMTP服務器須要SSL,那麼你應該經過設置email_ssl = TRUE參數來啓用SSL,但不支持STARTTLS。若是電子郵件服務器使用自簽名證書或不受信任證書,則須要設置email_insecure = true。有關email_identity的詳細說明,請參閱rfc2595 - email_server = smtp.mydomain.com - email_server_port = 25 - email_identity = - email_username = sample_admin@mydomain.com - email_password = abc - email_from = admin [sample_admin@mydomain.com(mailto:sample_admin@mydomain.com) - email_ssl = false - email_insecure = false |
harbor_admin_password | 管理員的初始密碼。此密碼僅在Harbor首次啓動時生效。以後將忽略此設置,而且應在UI中設置管理員密碼。請注意:默認用戶名/密碼爲admin/Harbor12345 |
auth_mode | 使用的身份驗證類型。默認狀況下,它是db_auth,即憑據存儲在數據庫中。對於LDAP身份驗證,請將其設置爲ldap_auth。重要信息:從現有Harbor實例升級時,必須確保在啓動新版本的Harbor以前,harbor.cfg配置文件中auth_mode相同。不然,用戶可能沒法在升級後登陸。 |
ldap_url | LDAP鏈接URL(例如ldaps://ldap.mydomain.com)。 僅在auth_mode設置爲ldap_auth時使用。 |
ldap_searchdn | 具備搜索LDAP/AD服務器權限的用戶的DN(例如uid=admin,ou=people,dc=mydomain,dc=com)。 |
ldap_search_pwd | ldap_searchdn指定的用戶密碼。 |
ldap_basedn | 查找用戶的基本DN,例如ou=people,dc=mydomain,dc=com。 僅在auth_mode設置爲ldap_auth時使用。 |
ldap_filter | 用於查找用戶的搜索過濾器,例如(objectClass=person)。 |
ldap_uid | 用於在LDAP搜索期間匹配用戶的屬性,它能夠是uid,cn,email或其餘屬性。 |
ldap_scope | 搜索用戶的範圍,0-LDAP_SCOPE_BASE,1-LDAP_SCOPE_ONELEVEL,2-LDAP_SCOPE_SUBTREE。默認值爲2。 |
self_registration | ( on或off。默認on)啓用/禁用用戶自助註冊功能。禁用時,新用戶只能由管理員用戶建立,只有管理員能夠在Harbor中建立新用戶。 注意:當auth_mode設置爲ldap_auth時,始終禁用自助註冊功能,並忽略此設置。 |
token_expiration | 令牌服務建立的令牌到期時間(以分鐘爲單位),默認爲30分鐘。 |
project_creation_restriction | 用於控制用戶有權建立項目的設置。默認狀況下,每一個人均可以建立一個項目,設置爲「adminonly」,只有管理員才能建立項目。 |
配置存儲後端(可選)
默認狀況下,Harbor將鏡像存儲在本地文件系統中。在生產環境中,能夠考慮使用其餘存儲後端而不是本地文件系統,如S3,OpenStack Swift,Ceph等。須要更新的是storage文件中的部分common/templates/registry/config.yml。例如,若是使用Openstack Swift做爲存儲後端,則該部分可能以下所示:
storage: swift: username: admin password: ADMIN_PASS authurl: http://keystone_addr:35357/v3/auth tenant: admin domain: default region: regionOne container: docker_images
默認狀況下,Harbor監聽80(HTTP)和443(HTTPS),若是端口已經被佔用,可使用自定義端口。
對於HTTP協議
一、修改 docker-compose.yml
將第一個80修改成自定義端口,例如8888:80。
proxy: image: goharbor/nginx-photon:v1.7.0 container_name: nginx restart: always cap_drop: \- ALL cap_add: \- CHOWN \- SETGID \- SETUID \- NET_BIND_SERVICE volumes: \- ./common/config/nginx:/etc/nginx:z networks: \- harbor dns_search: . ports: \- 8888:80 將80端口映射到8888 \- 8443:443 將443端口映射到8443 \- 4443:4443 depends_on: \- postgresql \- registry \- core \- portal \- log logging: driver: "syslog" options: syslog-address: "tcp://192.168.0.2:1514" tag: "proxy"
二、修改harbor.cfg,將8888端口添加到參數「hostname」
hostname = 192.168.0.2:8888
在harbor文件夾中有install.sh腳本,一旦harbor.cfg和存儲後端(可選)配置完成,就能夠鏡像Harbor安裝。請注意,在線安裝須要一些時間從Docker hub下載Harbor鏡像,具體根據實際網絡狀況。
因爲Harbor已與Notary和Clair集成(用於漏洞掃描),因此存在如下4中安裝,任選其一便可:
sudo ./install.sh
Harbor已與Notary和Clair集成(用於漏洞掃描)。可是,默認不安裝Notary或Clair服務。若是一切正常,應該可以打開瀏覽器訪問http://192.168.0.2:8888/ 上的管理門戶(192.168.0.2:8888是harbor.cfg配置的hostname,默認管理員用戶名/密碼爲:admin/Harbor12345)。以下圖:
登陸管理門戶並建立一個新項目,例如: myproject。而後,可使用docker命令登陸和推送鏡像。
可使用下面命令進行驗證是否搭建成功
docker login 192.168.0.2:8888
過程以下:
root@duke:/etc/docker# docker login 192.168.0.2:8888 Username (admin): 輸入帳戶:admin Password: 輸入默認密碼:Harbor12345 Login Succeeded
openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt
執行步驟以下:
root@duke:~# openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt Generating a 4096 bit RSA private key .............................................++ .............................................++ writing new private key to 'ca.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:CN State or Province Name (full name) [Some-State]:NanJing Locality Name (eg, city) []:NanJing Organization Name (eg, company) [Internet Widgits Pty Ltd]:rancher Organizational Unit Name (eg, section) []:info technology Common Name (e.g. server FQDN or YOUR name) []:duke Email Address []:xxxxx@126.com
若是你使用相似demo.rancher.com的FQDN域名訪問,則須要設置demo.rancher.com做爲CN;若是你使用IP地址訪問,CN則爲IP地址:
openssl req -newkey rsa:4096 -nodes -sha256 -keyout demo.rancher.com.key -out demo.rancher.com.csr
或者
openssl req -newkey rsa:4096 -nodes -sha256 -keyout 192.168.0.2.key -out 192.168.0.2.csr
執行步驟以下:
root@duke:~# openssl req -newkey rsa:4096 -nodes -sha256 -keyout 192.168.0.2.key -out 192.168.0.2.csr Generating a 4096 bit RSA private key ....................................................................++ ....................................................................++ writing new private key to '192.168.0.2.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:CN State or Province Name (full name) [Some-State]:NanJing Locality Name (eg, city) []:NanJing Organization Name (eg, company) [Internet Widgits Pty Ltd]:RANCHER Organizational Unit Name (eg, section) []:info technology Common Name (e.g. server FQDN or YOUR name) []:192.168.0.2 Email Address []:xxxxx@126.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:附屬屬性修改密碼,能夠不填 An optional company name []:附屬屬性另外一個公司名稱,能夠不填
openssl x509 -req -days 365 -in 192.168.0.2.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out 192.168.0.2.crt
執行步驟以下:
root@duke:~# openssl x509 -req -days 365 -in 192.168.0.2.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out 192.168.0.2.crt
Signature ok
subject=/C=CN/ST=NanJing/L=NanJing/O=RANCHER/OU=info technology/CN=192.168.0.2/emailAddress=xxxxx@126.com
Getting CA Private Key
若是你使用IP,例如192.168.0.2來鏈接,則能夠改成運行如下命令
echo 'subjectAltName = IP:192.168.0.2' > extfile.cnf openssl x509 -req -days 365 -in 192.168.0.2.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out 192.168.0.2.crt
執行步驟以下:
root@duke:~# echo 'subjectAltName = IP:192.168.0.2' > extfile.cnf
root@duke:~# openssl x509 -req -days 365 -in 192.168.0.2.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out 192.168.0.2.crt
Signature ok
subject=/C=CN/ST=NanJing/L=NanJing/O=RANCHER/OU=info technology/CN=192.168.0.2/emailAddress=xxxxx@126.com
Getting CA Private Key
通過上面步驟操做後,會生成ca.crt、ca.srl、ca.key、192.168.0.2.crt、192.168.0.2.key、192.168.0.2.csr、extfile.cnf這幾個文件。
執行步驟以下:
root@duke:~# ls
192.168.0.2.crt 192.168.0.2.key ca.crt ca.srl docker-1.13.1.tgz kubectl shipyard var 模板 圖片 下載 桌面
192.168.0.2.csr anaconda3 ca.key docker extfile.cnf mapd-docker-storage tigervncserver_1.6.80-4_amd64.deb 公共的 視頻 文檔 音樂
若是要啓用SSL,並進行HTTPS登錄,就必須配置harbor.cfg如下配置
hostname = 192.168.0.2:8443 在修改了默認端口狀況下,必須配置端口,此處爲8443,不配置將沒法保證 docker login的正常登錄 ui_url_protocol = https 要啓用SSL認證,就必須配置爲https customize_crt = on 要啓用SSL認證,就必須配置爲on ssl_cert = /data/cert/server.crt 私有證書存放地址 ssl_cert_key = /data/cert/server.key 私有密鑰存放地址 secretkey_path = /data 配置目錄
### 6.2.二、配置harbor的自定義CA認證 複製6.1章節生成的密鑰到指定的祕鑰目錄 ``` cp 192.168.0.2.crt /data/cert/server.crt cp 192.168.0.2.key /data/cert/server.key ``` ## 6.三、Harbor自定義監聽端口 默認狀況下,Harbor監聽80(HTTP)和443(HTTPS),若是端口已經被佔用,可使用自定義端口。 **對於HTTPS協議** **一、修改 docker-compose.yml** 將第一個443修改成自定義端口,例如8443:443。
proxy: image: goharbor/nginx-photon:v1.7.0 container_name: nginx restart: always cap_drop: \- ALL cap_add: \- CHOWN \- SETGID \- SETUID \- NET_BIND_SERVICE volumes: \- ./common/config/nginx:/etc/nginx:z networks: \- harbor dns_search: . ports: \- 8888:80 將80端口映射到8888 \- 8443:443 將443端口映射到8443 \- 4443:4443 depends_on: \- postgresql \- registry \- core \- portal \- log logging: driver: "syslog" options: syslog-address: "tcp://192.168.0.2:1514" tag: "proxy"
二、修改harbor.cfg,將8443端口添加到參數「hostname」
hostname = 192.168.0.2:8443
在harbor文件夾中有install.sh腳本,一旦harbor.cfg和存儲後端(可選)配置完成,就能夠鏡像Harbor安裝。請注意,在線安裝須要一些時間從Docker hub下載Harbor鏡像,具體根據實際網絡狀況。
因爲Harbor已與Notary和Clair集成(用於漏洞掃描),因此存在如下4中安裝,任選其一便可:
sudo ./install.sh
Harbor已與Notary和Clair集成(用於漏洞掃描)。可是,默認不安裝Notary或Clair服務。若是一切正常,應該可以打開瀏覽器訪問http://192.168.0.2:8888/ 上的管理門戶(192.168.0.2:8888是harbor.cfg配置的hostname,默認管理員用戶名/密碼爲:admin/Harbor12345)。以下圖:
管理門戶並建立一個新項目,例如: myproject。而後,可使用docker命令登陸和推送鏡像。
可使用下面命令進行驗證是否搭建成功
docker login -u admin -p Harbor12345 192.168.0.2:8443
過程以下:
root@duke:/etc/docker# docker login -u admin -p Harbor12345 192.168.0.2:8443 Login Succeeded
要使用Notary服務安裝Harbour,請在運行install.sh時添加參數:
sudo ./install.sh --with-notary
注意:使用notary安裝,參數ui_url_protocol必須設置爲「https」。
要使用Clair服務安裝Harbour,請在運行install.sh時添加參數:
sudo ./install.sh --with-clair
sudo ./install.sh --with-notary --with-clair
若是在安裝配置HTTPS的Harbor前,已經默認方式安裝了HTTP的harbor,能夠執行如下操做,前提是同版本操做。
sudo docker-compose down -v 中止並卸載harbor sudo vim harbor.cfg 從新配置harbor sudo prepare 從新生成harbor配置 sudo docker-compose up -d 從新安裝啓動harbor
刪除Harbor的數據庫和圖像數據(用於乾淨的從新安裝)
rm -r /data/database rm -r /data/registry
當Harbour與Notary或者Clair一塊兒安裝時,docker-compose命令須要指定一個或者兩個額外的模板文件。用於管理Harbour生命週期的docker-compose命令是:
sudo docker-compose -f ./docker-compose.yml -f ./docker-compose.notary.yml [ up|down|ps|stop|start ]
sudo docker-compose -f ./docker-compose.yml -f ./docker-compose.notary.yml -f ./docker-compose.clair.yml [ up|down|ps|stop|start ]
若是要在使用Notary安裝Harbor時更改配置並從新部署Harbour,則應使用如下命令:
sudo docker-compose -f ./docker-compose.yml -f ./docker-compose.notary.yml down -v sudo vim harbor.cfg sudo prepare --with-notary sudo docker-compose -f ./docker-compose.yml -f ./docker-compose.notary.yml up -d
sudo docker-compose -f ./docker-compose.yml -f ./docker-compose.notary.yml -f ./docker-compose.clair.yml down -v sudo vim harbor.cfg sudo prepare --with-notary --with-clair sudo docker-compose -f ./docker-compose.yml -f ./docker-compose.notary.yml -f ./docker-compose.clair.yml up -d
當Harbor沒法正常工做時,請運行如下命令以查明Harbor的全部容器是否處於UP狀態:
sudo docker-compose ps
若是容器不是UP狀態,檢查目錄容器的日誌文件/var/log/harbor。例如,若是容器harbor-ui未運行,則應查看日誌文件ui.log。