近来重启harbor服务器发现主机重启之后harbor不能自己起来,docker-compose restart 容器也会报错,查找资料发现问题在于容器只有在 docker-compose up时,才会按照 depends_on定义的顺序启动。
docker 本身并不记录容器之间的依赖顺序,容器们的重启是相互独立的,各自独立的重启导致服务器重启后,harbor 无法正常启动。

参考https://www.cnblogs.com/kirito-c/p/11145881.html​​​​​​

https://github.com/goharbor/harbor/issues/7008

查看 harbor 目录下的 docker-compose.yml 会发现,所有的 containers 都配置了restart:always: 

这表示所有的容器在意外关闭后都会自动重启,比如 docker 重启或服务器重启。(手动 stop 不会自动重启)

但是我在手动运行 docker-compose restart ,发现有几个 container 并没有自动重启:

尝试将 harbor 配成 systemd 的 service,添加配置文件 

vi /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 /home/swpa/Downloads/harborv1.6.1/harbor/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose -f /home/swpa/Downloads/harborv1.6.1/harbor/docker-compose.yml down

[Install]
WantedBy=multi-user.target

在重新启动

sudo systemctl enable harbor
sudo systemctl start harbor

之后reboot,harbor也能自动重启 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐