Harbor 開機自啓遇到的問題

Harbor 是一個企業級的 Docker 私有倉庫項目,它自己由多個 Docker Containers 組成,經過 docker-compose 管理 containers 之間的依賴關係。html

安裝

安裝參見官方文檔:Harbor - Installation and Configuration Guide
修改 harbor.yml 時,須要注意的有:python

  1. 使用 https 時,要本身生成證書,而後在 harbor.yml 裏配置好證書的路徑。
  2. data_volume 能夠指定爲 /data/harbor,而後要按期備份這個文件夾。(或者直接在新機器上裝個 harbor,用 harbor 自帶的倉庫複製功能作按期備份。)
  3. 企業的話,可能還須要配置 ldap 集成驗證。

而後 sudo ./install.sh 安裝 harbor(貌似必須用 sudo,由於生成出來的配置文件的 owner 都是 root,並且權限設得很嚴格。)
安裝完成後會自動啓動 harbor.nginx

自動啓動

查看 harbor 目錄下的 docker-compose.yml 會發現,全部的 containers 都配置了 restart: alwaysgit

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

  1. goharbor/nginx-photon:v1.8.1
  2. goharbor/harbor-portal:v1.8.1
  3. goharbor/harbor-jobservice:v1.8.1
  4. goharbor/redis-photon:v1.8.1
  5. 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

參考

相關文章
相關標籤/搜索