Harbor 是一個企業級的 Docker 私有倉庫項目,它自己由多個 Docker Containers 組成,經過 docker-compose 管理 containers 之間的依賴關係。html
安裝參見官方文檔:Harbor - Installation and Configuration Guide,
修改 harbor.yml
時,須要注意的有:python
/data/harbor
,而後要按期備份這個文件夾。(或者直接在新機器上裝個 harbor,用 harbor 自帶的倉庫複製功能作按期備份。)而後 sudo ./install.sh
安裝 harbor(貌似必須用 sudo,由於生成出來的配置文件的 owner 都是 root,並且權限設得很嚴格。)
安裝完成後會自動啓動 harbor.nginx
查看 harbor 目錄下的 docker-compose.yml 會發現,全部的 containers 都配置了 restart: always
:git
version: '2.3' services: log: image: goharbor/harbor-log:v1.8.1 container_name: harbor-log restart: always dns_search: . # ...... registry: image: goharbor/registry-photon:v2.7.1-patch-2819-v1.8.1 container_name: registry restart: always # ......
這表示全部的容器在意外關閉後都會自動重啓,好比 docker 重啓或服務器重啓。(手動 stop 不會自動重啓)github
可是我在手動運行 docker-compose up -d
,而後重啓服務器後,發現有幾個 container 並無自動重啓:redis
[ryan@ryan-pc ~]$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f30d802002a4 goharbor/nginx-photon:v1.8.1 "nginx -g 'daemon of…" 13 hours ago Exited (128) 27 minutes ago 0.0.0.0:80->80/tcp nginx 21472ce8a993 goharbor/harbor-portal:v1.8.1 "nginx -g 'daemon of…" 13 hours ago Exited (128) 27 minutes ago 80/tcp harbor-portal 5d866bb17c58 goharbor/harbor-jobservice:v1.8.1 "/harbor/start.sh" 13 hours ago Exited (137) 26 minutes ago harbor-jobservice 0cf0f93b5a87 goharbor/harbor-core:v1.8.1 "/harbor/start.sh" 13 hours ago Up 11 seconds (health: starting) harbor-core cba280d9b945 goharbor/redis-photon:v1.8.1 "docker-entrypoint.s…" 13 hours ago Exited (137) 26 minutes ago 6379/tcp redis 473e46d1f746 goharbor/harbor-registryctl:v1.8.1 "/harbor/start.sh" 13 hours ago Up 11 seconds (health: starting) registryctl 51f105f1691d goharbor/registry-photon:v2.7.1-patch-2819-v1.8.1 "/entrypoint.sh /etc…" 13 hours ago Exited (137) 26 minutes ago 5000/tcp registry c41594ec7779 goharbor/harbor-db:v1.8.1 "/entrypoint.sh post…" 13 hours ago Up 11 seconds (health: starting) 5432/tcp harbor-db 713bd4961772 goharbor/harbor-log:v1.8.1 "/bin/sh -c /usr/loc…" 13 hours ago Up 11 seconds (health: starting) 127.0.0.1:1514->10514/tcp harbor-log
能夠看到下列五個容器都處於 Exited 狀態:docker
goharbor/nginx-photon:v1.8.1
goharbor/harbor-portal:v1.8.1
goharbor/harbor-jobservice:v1.8.1
goharbor/redis-photon:v1.8.1
goharbor/registry-photon:v2.7.1-patch-2819-v1.8.1
搜索發現有人提過這個 issue: https://github.com/goharbor/harbor/issues/7008bash
因而嘗試將 harbor 配成 systemd 的 service,添加配置文件 /usr/lib/systemd/system/harbor.service
,內容以下:服務器
[Unit] Description=Harbor After=docker.service systemd-networkd.service systemd-resolved.service Requires=docker.service Documentation=http://github.com/vmware/harbor [Service] Type=simple Restart=on-failure RestartSec=5 ExecStart=/usr/local/bin/docker-compose -f {{ harbor_install_path }}/harbor/docker-compose.yml up ExecStop=/usr/local/bin/docker-compose -f {{ harbor_install_path }}/harbor/docker-compose.yml down [Install] WantedBy=multi-user.target
其中 {{ harbor_install_path }}
換成本身的 harbor 安裝路徑。
還有 docker-compose 的絕對路徑,請經過 which docker-compose
查看。tcp
而後啓動該項服務:
sudo systemctl enable harbor sudo systemctl start harbor
如今查看下 harbor.service 的狀況:
● harbor.service - Harbor Loaded: loaded (/usr/lib/systemd/system/harbor.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2019-07-07 12:54:27 CST; 2min 4s ago Docs: http://github.com/vmware/harbor Main PID: 9734 (docker-compose) Tasks: 11 (limit: 4915) Memory: 35.7M CGroup: /system.slice/harbor.service └─9734 /usr/bin/python /usr/bin/docker-compose -f /home/ryan/harbor/docker-compose.yml up 7月 07 12:54:30 ryan-pc docker-compose[9734]: [128B blob data] 7月 07 12:54:31 ryan-pc docker-compose[9734]: [167B blob data] 7月 07 12:54:31 ryan-pc docker-compose[9734]: registryctl | WARNING: no logs are available with the 'syslog' log driver 7月 07 12:54:31 ryan-pc docker-compose[9734]: registry | WARNING: no logs are available with the 'syslog' log driver 7月 07 12:54:31 ryan-pc docker-compose[9734]: harbor-db | WARNING: no logs are available with the 'syslog' log driver 7月 07 12:54:31 ryan-pc docker-compose[9734]: redis | WARNING: no logs are available with the 'syslog' log driver 7月 07 12:54:31 ryan-pc docker-compose[9734]: harbor-core | WARNING: no logs are available with the 'syslog' log driver 7月 07 12:54:31 ryan-pc docker-compose[9734]: harbor-jobservice | WARNING: no logs are available with the 'syslog' log driver 7月 07 12:54:31 ryan-pc docker-compose[9734]: harbor-portal | WARNING: no logs are available with the 'syslog' log driver 7月 07 12:54:31 ryan-pc docker-compose[9734]: nginx | WARNING: no logs are available with the 'syslog' log driver
重啓再看,發現 harbor 容器組終於所有 up 了:
[ryan@ryan-pc ~]$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 90943210e354 goharbor/nginx-photon:v1.8.1 "nginx -g 'daemon of…" 37 seconds ago Up 35 seconds (healthy) 0.0.0.0:80->80/tcp nginx bc70706d7b5f goharbor/harbor-portal:v1.8.1 "nginx -g 'daemon of…" 38 seconds ago Up 36 seconds (healthy) 80/tcp harbor-portal 54e132bd1a10 goharbor/harbor-jobservice:v1.8.1 "/harbor/start.sh" 38 seconds ago Up 36 seconds harbor-jobservice 28ada4a941ee goharbor/harbor-core:v1.8.1 "/harbor/start.sh" 39 seconds ago Up 37 seconds (healthy) harbor-core de44686f7e72 goharbor/registry-photon:v2.7.1-patch-2819-v1.8.1 "/entrypoint.sh /etc…" 39 seconds ago Up 38 seconds (healthy) 5000/tcp registry e5efdae34c13 goharbor/harbor-db:v1.8.1 "/entrypoint.sh post…" 39 seconds ago Up 38 seconds (healthy) 5432/tcp harbor-db a5fe52e1f184 goharbor/harbor-registryctl:v1.8.1 "/harbor/start.sh" 39 seconds ago Up 38 seconds (healthy) registryctl 4a74b5f3499a goharbor/redis-photon:v1.8.1 "docker-entrypoint.s…" 39 seconds ago Up 38 seconds 6379/tcp redis 677fd84d0a70 goharbor/harbor-log:v1.8.1 "/bin/sh -c /usr/loc…" 40 seconds ago Up 39 seconds (healthy) 127.0.0.1:1514->10514/tcp harbor-log