1、環境介紹
目標主機的先決條件
Harbor被部署爲多個Docker容器,所以能夠部署在任何支持Docker的Linux發行版上。目標主機須要安裝Python,Docker和Docker Compose。
硬件python
資源 | 容量 | 描述 |
---|---|---|
cpu | 最小2cpu | 首選4cpu |
memory | 最小4GB | 首選8GB |
disk | 最小40GB | 首選160GB |
軟件linux
軟件 | 版本 | 描述 |
---|---|---|
Python | 2.7及以上 | linuxiso自帶python2.7,此步驟可省略 |
Docker engine | 1.10及以上 | 有關安裝說明,請參閱:https://docs.docker.com/engine/×××tallation/ |
Docker compose | 1.6.0及以上 | 有關安裝說明,請訪問:https://docs.docker.com/compose/×××tall/ |
Openssl | 最新 | 爲Harbor生成證書和密鑰 |
2、安裝
下載harbor軟件包:https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-×××taller-v1.7.1.tgz
解壓nginx
cd /home
tar -zxvf harbor-offline-×××taller-v1.7.1.tgz
yum update -ygit
耐心等待一會
安裝docekr並配置加速器和鏡像倉庫地址github
yum ×××tall docker -y
yum ×××tall vim -y
[root@localhost docker]# cd /etc/docker/
[root@localhost docker]# ls
certs.d daemon.json seccomp.json
vim daemon.json
{
"registry-mirrors": ["https://o3niohlb.mirror.aliyuncs.com"],
"×××ecure-registries": ["172.18.74.145"]
}redis
這裏注意IP地址前面不要加任何協議
不然會報錯sql
systemctl daemon-reload systemctl enable docker systemctl start docker systemctl status docker
安裝docker-composedocker
yum ×××tall epel-release -y yum ×××tall docker-compose -y
查看各軟件版本json
[root@localhost ~]# openssl OpenSSL> version OpenSSL 1.0.2k-fips 26 Jan 2017 OpenSSL> ^C [root@localhost ~]# python --version Python 2.7.5 [root@localhost ~]# [root@localhost ~]# docker -v Docker version 1.13.1, build b2f74b2/1.13.1 [root@localhost ~]# docker-compose -v docker-compose version 1.18.0, build 8dd22a9 [root@localhost ~]#
編輯harbor配置文件vim
cd /home/harbor/ vim harbor.cfg hostname = 172.18.74.145
安裝Harbor
[root@localhost harbor]# ./×××tall.sh [Step 0]: checking ×××tallation environment ... Note: docker version: 1.13.1 Note: docker-compose version: 1.18.0 [Step 1]: loading Harbor images ... ae18db924eef: Loading layer 32.92 MB/32.92 MB 1c06074dba9c: Loading layer 8.955 MB/8.955 MB 7a719a639e34: Loading layer 3.072 kB/3.072 kB 49f7bca05da9: Loading layer 2.56 kB/2.56 kB e86d69bef97e: Loading layer 2.56 kB/2.56 kB 81e122d773f5: Loading layer 2.048 kB/2.048 kB 5fe5adb8cf31: Loading layer 22.8 MB/22.8 MB d760045419e4: Loading layer 22.8 MB/22.8 MB Loaded image: goharbor/registry-photon:v2.6.2-v1.7.1 c0f668a21621: Loading layer 133.2 MB/133.2 MB f8cb0bf39ff2: Loading layer 684 MB/684 MB 444ac38a117b: Loading layer 7.68 kB/7.68 kB 2e16f24ac8bc: Loading layer 212 kB/212 kB Loaded image: goharbor/harbor-migrator:v1.7.1 fa2dcaba747a: Loading layer 8.955 MB/8.955 MB eeaaf4c760eb: Loading layer 15.6 MB/15.6 MB 98ffd6175b61: Loading layer 18.94 kB/18.94 kB fc1db6c4f652: Loading layer 15.6 MB/15.6 MB Loaded image: goharbor/harbor-adm×××erver:v1.7.1 8d55a6a034d6: Loading layer 8.955 MB/8.955 MB 01ef68a17913: Loading layer 27.24 MB/27.24 MB f9258cfa4b48: Loading layer 5.632 kB/5.632 kB dcf5c61ede76: Loading layer 27.24 MB/27.24 MB Loaded image: goharbor/harbor-core:v1.7.1 1f65d10893c9: Loading layer 50.39 MB/50.39 MB 358f40be2091: Loading layer 3.584 kB/3.584 kB c7f3ef058d0b: Loading layer 3.072 kB/3.072 kB 154caf7c7173: Loading layer 4.096 kB/4.096 kB 42c7764aa777: Loading layer 3.584 kB/3.584 kB 023f3a96f324: Loading layer 10.24 kB/10.24 kB Loaded image: goharbor/harbor-log:v1.7.1 a1b528067504: Loading layer 8.955 MB/8.955 MB 2d3d34f3ba5b: Loading layer 21.51 MB/21.51 MB a5da70777097: Loading layer 21.51 MB/21.51 MB Loaded image: goharbor/harbor-jobservice:v1.7.1 ab31dfc84e9d: Loading layer 8.954 MB/8.954 MB b130423af762: Loading layer 13.43 MB/13.43 MB 357c059d0598: Loading layer 17.3 MB/17.3 MB fabc6edfac55: Loading layer 11.26 kB/11.26 kB cfaa3b5d445a: Loading layer 3.072 kB/3.072 kB 12c73a4b2c7a: Loading layer 30.72 MB/30.72 MB Loaded image: goharbor/notary-server-photon:v0.6.1-v1.7.1 50a6467bd619: Loading layer 113 MB/113 MB 6ae61fc91943: Loading layer 11.46 MB/11.46 MB 5c840c272f78: Loading layer 2.048 kB/2.048 kB 077d16ebcba8: Loading layer 48.13 kB/48.13 kB b822f5ff7858: Loading layer 3.072 kB/3.072 kB 4548140152fd: Loading layer 11.51 MB/11.51 MB Loaded image: goharbor/clair-photon:v2.0.7-v1.7.1 232024be30e3: Loading layer 3.39 MB/3.39 MB a73624ae3fad: Loading layer 4.721 MB/4.721 MB 96b8c5c532c3: Loading layer 3.584 kB/3.584 kB Loaded image: goharbor/harbor-portal:v1.7.1 e2fd12afe6e8: Loading layer 63.31 MB/63.31 MB e973513bcb58: Loading layer 40.74 MB/40.74 MB 4f45af643b2b: Loading layer 6.656 kB/6.656 kB 54a84094f024: Loading layer 2.048 kB/2.048 kB 2d78cf8a687b: Loading layer 7.68 kB/7.68 kB e96067b83a72: Loading layer 2.56 kB/2.56 kB 38a7d304147f: Loading layer 2.56 kB/2.56 kB a36c0cb6a35a: Loading layer 2.56 kB/2.56 kB Loaded image: goharbor/harbor-db:v1.7.1 b0c31ad64c85: Loading layer 65.01 MB/65.01 MB 22fbab41769e: Loading layer 3.072 kB/3.072 kB 7f28bf5373b2: Loading layer 59.9 kB/59.9 kB abb9969cff2a: Loading layer 61.95 kB/61.95 kB Loaded image: goharbor/redis-photon:v1.7.1 933cd9a15fc5: Loading layer 3.39 MB/3.39 MB Loaded image: goharbor/nginx-photon:v1.7.1 6ee16a137af2: Loading layer 8.955 MB/8.955 MB 954443cb7d20: Loading layer 22.8 MB/22.8 MB 302a998137db: Loading layer 3.072 kB/3.072 kB e342723aef9b: Loading layer 7.465 MB/7.465 MB 4eeb61ed730b: Loading layer 30.26 MB/30.26 MB Loaded image: goharbor/harbor-registryctl:v1.7.1 5b40d957fafd: Loading layer 12.11 MB/12.11 MB 63489681dd6c: Loading layer 17.3 MB/17.3 MB 696209dcd336: Loading layer 11.26 kB/11.26 kB 8dc53997aa1f: Loading layer 3.072 kB/3.072 kB cb6d560a9958: Loading layer 29.41 MB/29.41 MB Loaded image: goharbor/notary-signer-photon:v0.6.1-v1.7.1 dc1e16790c89: Loading layer 8.96 MB/8.96 MB 046c7e7a0100: Loading layer 35.08 MB/35.08 MB 8c8428e3d6c6: Loading layer 2.048 kB/2.048 kB ebb477ee35a2: Loading layer 3.072 kB/3.072 kB 19636f39e29d: Loading layer 35.08 MB/35.08 MB Loaded image: goharbor/chartmuseum-photon:v0.7.1-v1.7.1 [Step 2]: preparing environment ... Generated and saved secret to file: /data/secretkey Generated configuration file: ./common/config/nginx/nginx.conf Generated configuration file: ./common/config/adm×××erver/env Generated configuration file: ./common/config/core/env Generated configuration file: ./common/config/registry/config.yml Generated configuration file: ./common/config/db/env Generated configuration file: ./common/config/jobservice/env Generated configuration file: ./common/config/jobservice/config.yml Generated configuration file: ./common/config/log/logrotate.conf Generated configuration file: ./common/config/registryctl/env Generated configuration file: ./common/config/core/app.conf Generated certificate, key file: ./common/config/core/private_key.pem, cert file : ./common/config/registry/root.crt Creating harbor-log ... done e. [Step 3]: checking existing ×××tance of Harbor ... Creating harbor-db ... done Creating harbor-core ... done [Step 4]: starting Harbor ... Creating harbor-portal ... done Creating nginx ... done Creating registryctl ... Creating registry ... Creating harbor-adm×××erver ... Creating redis ... Creating harbor-db ... Creating harbor-core ... Creating harbor-jobservice ... Creating harbor-portal ... Creating nginx ... ✔ ----Harbor has been ×××talled and started successfully.---- Now you should be able to visit the admin portal at http://172.18.74.145. For more details, please visit https://github.com/goharbor/harbor .
從上面能夠看出Harbor是基於多個容器的服務
查看一下鏡像,會發現多了好多,這些都是剛纔安裝Harbor的過程當中拉取的鏡像
[root@localhost harbor]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE goharbor/chartmuseum-photon v0.7.1-v1.7.1 f61c186d5b1b 4 months ago 111 MB goharbor/harbor-migrator v1.7.1 9ec6467899b6 4 months ago 799 MB goharbor/redis-photon v1.7.1 c7aa92fb1c26 4 months ago 96.3 MB goharbor/clair-photon v2.0.7-v1.7.1 832461eef7dd 4 months ago 165 MB goharbor/notary-server-photon v0.6.1-v1.7.1 382cd390eaff 4 months ago 102 MB goharbor/notary-signer-photon v0.6.1-v1.7.1 76486e1aa1a2 4 months ago 99.6 MB goharbor/harbor-registryctl v1.7.1 aefea98e6f92 4 months ago 101 MB goharbor/registry-photon v2.6.2-v1.7.1 13b348ffd0c9 4 months ago 86.4 MB goharbor/nginx-photon v1.7.1 9b9520572494 4 months ago 35.5 MB goharbor/harbor-log v1.7.1 0744800d7a4c 4 months ago 81 MB goharbor/harbor-jobservice v1.7.1 db96ce6ed531 4 months ago 83.8 MB goharbor/harbor-core v1.7.1 8f253c0f9d50 4 months ago 95.2 MB goharbor/harbor-portal v1.7.1 b50162ab177a 4 months ago 40.2 MB goharbor/harbor-adm×××erver v1.7.1 22d66cccedba 4 months ago 72 MB goharbor/harbor-db v1.7.1 c2a95254c0bf 4 months
至此Harbor的安裝就完成了,訪問ip直接就能夠看到harbor的登錄頁面,Harbor的默認登陸名是admin,密碼是Harbor123456,能夠登錄進去修改密碼。
3、管理
登錄到harbor
[root@localhost harbor]# docker login 172.18.74.145 Username: admin Password: Login Succeeded
拉取alpine鏡像
[root@localhost harbor]# docker pull alpine [root@localhost harbor]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/alpine latest cdf98d1859c1 4 weeks ago 5.53 MB
給鏡像打標籤,注意打標籤的格式爲 鏡像倉庫名稱/項目名/鏡像名:版本號,
[root@localhost harbor]# docker tag docker.io/alpine:latest 172.18.74.145/library/alpine:latest [root@localhost harbor]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE 172.18.74.145/library/alpine latest cdf98d1859c1 4 weeks ago 5.53 MB docker.io/alpine latest cdf98d1859c1 4 weeks ago 5.53 MB
將鏡像推送至harbor
[root@localhost harbor]# docker push 172.18.74.145/library/alpine:latest
The push refers to a repository [172.18.74.145/library/alpine]
a464c54f93a9: Pushed
latest: digest: sha256:5c40b3c27b9f13c873fefb2139765c56ce97fd50230f1f2d5c91e55dec171907 size: 528
查看
在默認的library項目裏有咱們剛纔上傳的鏡像,下載數爲0,咱們pull一下看看下載數的變化
[root@localhost harbor]# docker pull 172.18.74.145/library/alpine Using default tag: latest Trying to pull repository 172.18.74.145/library/alpine ... latest: Pulling from 172.18.74.145/library/alpine Digest: sha256:5c40b3c27b9f13c873fefb2139765c56ce97fd50230f1f2d5c91e55dec171907 Status: Image is up to date for 172.18.74.145/library/alpine:latest
下載數+1
中止Harbor
此命令會把因此harbor容器刪除,但不會刪除鏡像
[root@localhost harbor]# docker-compose down -v Stopping nginx ... done Stopping harbor-portal ... done Stopping harbor-jobservice ... done Stopping harbor-core ... done Stopping redis ... done Stopping harbor-db ... done Stopping registry ... done Stopping harbor-adm×××erver ... done Stopping registryctl ... done Stopping harbor-log ... done Removing nginx ... done Removing harbor-portal ... done Removing harbor-jobservice ... done Removing harbor-core ... done Removing redis ... done Removing harbor-db ... done Removing registry ... done Removing harbor-adm×××erver ... done Removing registryctl ... done Removing harbor-log ... done Removing network harbor_harbor
能夠看到全部的容器都中止並刪除了,而鏡像還存在。
[root@ocalhost harbor]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost harbor]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE 172.18.74.145/library/alpine latest cdf98d1859c1 4 weeks ago 5.53 MB docker.io/alpine latest cdf98d1859c1 4 weeks ago 5.53 MB goharbor/chartmuseum-photon v0.7.1-v1.7.1 f61c186d5b1b 4 months ago 111 MB goharbor/harbor-migrator v1.7.1 9ec6467899b6 4 months ago 799 MB goharbor/redis-photon v1.7.1 c7aa92fb1c26 4 months ago 96.3 MB goharbor/clair-photon v2.0.7-v1.7.1 832461eef7dd 4 months ago 165 MB goharbor/notary-server-photon v0.6.1-v1.7.1 382cd390eaff 4 months ago 102 MB goharbor/notary-signer-photon v0.6.1-v1.7.1 76486e1aa1a2 4 months ago 99.6 MB goharbor/harbor-registryctl v1.7.1 aefea98e6f92 4 months ago 101 MB goharbor/registry-photon v2.6.2-v1.7.1 13b348ffd0c9 4 months ago 86.4 MB goharbor/nginx-photon v1.7.1 9b9520572494 4 months ago 35.5 MB goharbor/harbor-log v1.7.1 0744800d7a4c 4 months ago 81 MB goharbor/harbor-jobservice v1.7.1 db96ce6ed531 4 months ago 83.8 MB goharbor/harbor-core v1.7.1 8f253c0f9d50 4 months ago 95.2 MB goharbor/harbor-portal v1.7.1 b50162ab177a 4 months ago 40.2 MB goharbor/harbor-adm×××erver v1.7.1 22d66cccedba 4 months ago 72 MB goharbor/harbor-db v1.7.1 c2a95254c0bf 4 months ago 133 MB
自定義配置Harbor監聽端口
[root@localhost harbor]# cd /home/harbor [root@localhost harbor]# vim docker-compose.yml proxy: image: goharbor/nginx-photon:v1.7.1 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 //這裏能夠把映射到本地的端口改成8888 - 443:443 - 4443:4443 depends_on: - postgresql - registry - core - portal - log logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "proxy"
要更改Harbor的配置,要中止現有的Harbor實例並更新harbor.cfg,使用prepare命令從新加載配置
vim harbor.cfg hostname=172.18.74.145:8888 ./prepare
開啓Harbor
[root@localhost harbor]# docker-compose up -d Creating harbor-portal ... done Creating nginx ... done Creating redis ... Creating harbor-adm×××erver ... Creating registry ... Creating registryctl ... Creating harbor-db ... Creating harbor-core ... Creating harbor-portal ... Creating harbor-jobservice ... Creating nginx ...
能夠看到harbor容器又都啓動了
[root@localhost harbor]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e913e767568e goharbor/nginx-photon:v1.7.1 "nginx -g 'daemon ..." 10 seconds ago Up 7 seconds (health: starting) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp nginx 8b1c95d68041 goharbor/harbor-jobservice:v1.7.1 "/harbor/start.sh" 12 seconds ago Up 9 seconds harbor-jobservice 39f48c79e914 goharbor/harbor-portal:v1.7.1 "nginx -g 'daemon ..." 12 seconds ago Up 9 seconds (health: starting) 80/tcp harbor-portal c0735c7ecad8 goharbor/harbor-core:v1.7.1 "/harbor/start.sh" 13 seconds ago Up 11 seconds (health: starting) harbor-core fd0830a7e6f9 goharbor/harbor-db:v1.7.1 "/entrypoint.sh po..." 16 seconds ago Up 12 seconds (health: starting) 5432/tcp harbor-db ab7efc2bee1b goharbor/harbor-registryctl:v1.7.1 "/harbor/start.sh" 16 seconds ago Up 12 seconds (health: starting) registryctl 01623abd77c2 goharbor/registry-photon:v2.6.2-v1.7.1 "/entrypoint.sh /e..." 16 seconds ago Up 12 seconds (health: starting) 5000/tcp registry 9ccbf668088b goharbor/harbor-adm×××erver:v1.7.1 "/harbor/start.sh" 16 seconds ago Up 12 seconds (health: starting) harbor-adm×××erver d35fbc13ca00 goharbor/redis-photon:v1.7.1 "docker-entrypoint..." 16 seconds ago Up 14 seconds 6379/tcp redis 1933f2a457c4 goharbor/harbor-log:v1.7.1 "/bin/sh -c /usr/l..." 17 seconds ago Up 15 seconds (health: starting) 127.0.0.1:1514->10514/tcp harbor-log
瀏覽器訪問ip:8888
默認狀況下,註冊表數據保留在主機的/data/目錄中,即便Harbor的容器被移除和/或從新建立,此數據仍保持不變。
[root@localhost ~]# cd /data/ [root@localhost data]# ls ca_download config database job_logs psc redis registry secretkey [root@localhost data]# cd registry/ [root@localhost registry]# tree . └── docker └── registry └── v2 ├── blobs │ └── sha256 │ ├── 5c │ │ └── 5c40b3c27b9f13c873fefb2139765c56ce97fd50230f1f2d5c91e55dec171907 │ │ └── data │ ├── bd │ │ └── bdf0201b3a056acc4d6062cc88cd8a4ad5979983bfb640f15a145e09ed985f92 │ │ └── data │ └── cd │ └── cdf98d1859c1beb33ec70507249d34bacf888d59c24df3204057f9a6c758dddb │ └── data └── repositories └── library └── alpine ├── _layers │ └── sha256 │ ├── bdf0201b3a056acc4d6062cc88cd8a4ad5979983bfb640f15a145e09ed985f92 │ │ └── link │ └── cdf98d1859c1beb33ec70507249d34bacf888d59c24df3204057f9a6c758dddb │ └── link ├── _manifests │ ├── revisions │ │ └── sha256 │ │ └── 5c40b3c27b9f13c873fefb2139765c56ce97fd50230f1f2d5c91e55dec171907 │ │ └── link │ └── tags │ └── latest │ ├── current │ │ └── link │ └── index │ └── sha256 │ └── 5c40b3c27b9f13c873fefb2139765c56ce97fd50230f1f2d5c91e55dec171907 │ └── link └── _uploads 29 directories, 8 files
此外,Harbor使用rsyslog來收集每一個容器中的日誌,默認狀況下,這些日誌文件存儲在主機的/var/log/harbor/下
可根據這些日誌文件進行故障排除
[root@localhost registry]# cd /var/log/harbor/ [root@localhost harbor]# ls adm×××erver.log core.log jobservice.log portal.log postgresql.log proxy.log redis.log registryctl.log registry.log