docker重启或系统重启后harbor自动启动
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 服务重启或系统重启后自动恢复运行,确保服务的高可用性。