2017-06-15 694 views
0

我准备了这样的搬运工,compose.yml如何在docker-compose中为`restart:on-failure`通知错误?

server: 
    build: server 
    restart: on-failure 

而且,我想从shell脚本发送错误的容器内,以重新启动容器。 我该怎么做?

+0

默认情况下,它重新启动容器,这是什么意思? – Iman

+0

在此容器上,正在运行shell脚本以检测某些内容。 我想通过shell脚本自己重新启动服务器容器。 – Harry

+0

你的意思是你想重启容器? – Iman

回答

3

容器不是虚拟机,它们是流程(以一种思维方式)。因此,容器内的OS重新启动没有意义,因此不可能。一个杀死,停止或重新启动容器,例如

docker stop CONTAINER 
docker kill CONTAINER 
docker restart CONTAINER 

在您的问题的上下文中,根据您的容器的具体情况,重新启动容器可能是最有意义的。

因此,我认为您的方案的最佳解决方案是在您的容器中安装/var/run/docker.sock,并使用Docker API自行重新启动您的容器。

您可以在here中看到可帮助您的库和SDK列表。请务必在您的容器中安装特定的SDK以便使用它。

希望它有帮助。

+0

谢谢伊曼, 我试过了,并从容器中调用API。 ''' curl --unix-socket /var/run/docker.sock -X POST http:/v1.30/containers/xxxxx/restart?t = 5 ''' 发生了那个错误。 ''' curl:option --unix-socket:未知 ''' – Harry

+1

问题是你应该使用'-v'选项来挂载它。例如'docker run sth -v /var/run/docker.sock:/ var/run/docker.sock' @Harry。 – Iman

+0

我正在使用docker-compose 然后像这样在volume指令中添加这样的 ' - /private/var/run/docker.sock:/ var/run/docker.sock'。 – Harry