docker重啟或系統重啟后harbor自動啟動
- docker重啟或系統重啟后harbor自動啟動
- 方法 1:在 docker-compose.yml 中配置重啟策略(推薦)
- 方法 2:創建 Systemd 服務(更可靠)
- 方法 3:使用 Docker 的 Restart 策略(替代方法)
- 驗證自動啟動
- 故障排查
- 最佳實踐
docker重啟或系統重啟后harbor自動啟動
方法 1:在 docker-compose.yml 中配置重啟策略(推薦)
這是最直接的方法,修改 Harbor 的 docker-compose.yml 文件:
- 編輯 Harbor 的 docker-compose 文件:
cd /path/to/harbor
nano docker-compose.yml
- 為每個服務添加 restart 策略:
services:nginx:image: goharbor/nginx-photon:v2.5.3container_name: nginxrestart: always # 添加這行# ...其他配置registry:image: goharbor/registry-photon:v2.5.3container_name: registryrestart: always # 添加這行# ...其他配置# 為所有其他服務(core, portal, postgresql, redis等)同樣添加
- 重新部署 Harbor:
docker-compose down
docker-compose up -d
方法 2:創建 Systemd 服務(更可靠)
- 創建服務文件:
sudo nano /etc/systemd/system/harbor.service
- 添加以下內容(修改路徑):
[Unit]
Description=Harbor Container Service
After=docker.service
Requires=docker.service[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/opt/harbor # 替換為你的Harbor路徑
ExecStart=/usr/local/bin/docker-compose -f docker-compose.yml up -d
ExecStop=/usr/local/bin/docker-compose -f docker-compose.yml down
TimeoutStartSec=0[Install]
WantedBy=multi-user.target
- 啟用并啟動服務:
sudo systemctl daemon-reload
sudo systemctl enable harbor # 啟用開機自啟
sudo systemctl start harbor # 立即啟動
方法 3:使用 Docker 的 Restart 策略(替代方法)
cd /path/to/harbor# 為所有容器設置重啟策略
docker-compose up -d --force-recreate
docker update --restart=always $(docker-compose ps -q)
驗證自動啟動
- 重啟 Docker 服務:
sudo systemctl restart docker
- 檢查容器狀態:
docker ps # 應顯示所有Harbor容器正在運行
- 重啟系統測試:
sudo reboot
- 重啟后檢查:
docker ps
curl -k https://localhost/api/v2.0/systeminfo # 驗證API訪問
故障排查
如果 Harbor 未自動啟動:
- 檢查 Docker 日志:
journalctl -u docker --since "10 minutes ago"
- 檢查 Harbor 啟動順序依賴:
docker logs <container_id> # 檢查具體容器日志
- 確保目錄權限正確:
sudo chown -R 10000:10000 /data # Harbor數據目錄
最佳實踐
- 推薦組合使用:
方法 1(修改 docker-compose.yml)+ 方法 2(Systemd 服務)
- 升級 Harbor 后的處理:
# 升級后重新啟用服務
cd /path/to/harbor
./install.sh
sudo systemctl restart harbor
- 監控自動啟動:
# 查看服務狀態
systemctl status harbor# 檢查最后啟動時間
systemctl show harbor --property=ActiveEnterTimestamp
至此,Harbor 將在 Docker 服務重啟或系統重啟后自動恢復運行,確保服務的高可用性。