近来重启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也能自动重启?
|