我有两个 Docker 容器:
1 用于 Keepalived 1 个用于 Haproxy
问题是我的track_script
killall -0 haproxy
(检查haproxy是否还活着)无法到达haproxy的进程(因为它在另一个容器中..)
我该怎么办?
谢谢!
最后我安装并绑定了 docker 套接字以在我的容器中运行
docker exec othercontainer killall -0 haproxy
。
不是最好的方法,但是..它有效
我有同样的情况,但我的 keepalived 不在容器中。我的场景:
为了在keepalived中使用track_script来监控haproxy,不幸的是我无法处理docker命令,所以我使用了这个track_script:
#!/bin/bash
output=$(netstat -tlpn | grep <YOUR_PORT_NUMBER>)
if [[ -n "$output" ]]; then
exit 0
else
exit 1
fi
当端口被 haproxy 容器使用时,此 track_script 返回 0。
什么也没有。如果容器中的主进程退出,容器也会退出; Docker 自动执行此操作,您不应该(并且在大多数情况下不能)检查另一个容器中的单个进程。
您可以使用重新启动策略让 Docker 自动重新启动容器及其包含的进程(如果容器恰好退出):
docker run -d --restart on-failure ... haproxy