Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在docker compose中通知“重新启动:失败时”的错误?_Docker_Docker Container - Fatal编程技术网

如何在docker compose中通知“重新启动:失败时”的错误?

如何在docker compose中通知“重新启动:失败时”的错误?,docker,docker-container,Docker,Docker Container,我准备了这样的docker-compose.yml server: build: server restart: on-failure 并且,我想从容器内的shell脚本发送错误,以重新启动容器。 我怎样才能做到这一点呢?容器不是虚拟机,它们是一种思维方式中的进程。因此,在容器中重新启动操作系统是没有意义的,因此是不可能的。终止、停止或重新启动容器,例如 docker stop CONTAINER docker kill CONTAINER docker restart C

我准备了这样的docker-compose.yml

  server:
    build: server
    restart: on-failure
并且,我想从容器内的shell脚本发送错误,以重新启动容器。
我怎样才能做到这一点呢?

容器不是虚拟机,它们是一种思维方式中的进程。因此,在容器中重新启动操作系统是没有意义的,因此是不可能的。终止、停止或重新启动容器,例如

docker stop CONTAINER
docker kill CONTAINER
docker restart CONTAINER
在问题的上下文中,根据容器的具体情况,重新启动有问题的容器可能最有意义

因此,我认为对于您的场景来说,最好的解决方案是在您的容器中挂载/var/run/docker.sock,并使用docker API自行重启您的容器

您可以看到库和SDK的列表,这些库和SDK可能会帮助您解决问题。确保在容器中安装特定的SDK以使用它


希望能有所帮助。

容器不是虚拟机,它们是一种思维方式的进程。因此,在容器中重新启动操作系统是没有意义的,因此是不可能的。终止、停止或重新启动容器,例如

docker stop CONTAINER
docker kill CONTAINER
docker restart CONTAINER
在问题的上下文中,根据容器的具体情况,重新启动有问题的容器可能最有意义

因此,我认为对于您的场景来说,最好的解决方案是在您的容器中挂载/var/run/docker.sock,并使用docker API自行重启您的容器

您可以看到库和SDK的列表,这些库和SDK可能会帮助您解决问题。确保在容器中安装特定的SDK以使用它


希望有帮助。

默认情况下,它会重新启动容器,这是什么意思?在此容器上,shell脚本正在运行以检测某些内容。我想用shell脚本重新启动服务器容器本身。你是说你想自己重新启动容器?我是说,我想自己重新启动容器。默认情况下,它会重新启动容器,你这么说是什么意思?在这个容器上,shell脚本正在运行以检测某些内容。我想用shell脚本重新启动服务器容器本身。你是说你想自己重新启动容器?我是说,我想自己重新启动容器。谢谢伊曼,我试过了,从容器内部调用了APIcurl-unix-socket/var/run/docker.sock-X-POST-http:/v1.30/containers/xxxxx/restart?t=5``发生了错误。````````````````curl:option-unixsocket:is unknown``问题是您应该使用-v选项挂载它。例如,docker run sth-v/var/run/docker.sock:/var/run/docker.sock@Harry。我使用docker compose,然后像这样添加它-/private/var/run/docker.sock:/var/run/docker.sock,在volumes指令中。将顺序更改为这样的东西不会有帮助吗?curl-X POST-unix socket/var/run/docker.sockiman,我尝试了它,并从容器内部调用了APIcurl-unix-socket/var/run/docker.sock-X-POST-http:/v1.30/containers/xxxxx/restart?t=5``发生了错误。````````````````curl:option-unixsocket:is unknown``问题是您应该使用-v选项挂载它。例如,docker run sth-v/var/run/docker.sock:/var/run/docker.sock@Harry。我使用docker compose,然后像这样添加它-/private/var/run/docker.sock:/var/run/docker.sock,在volumes指令中。将顺序更改为这样的东西不会有帮助吗?curl-X POST-unix套接字/var/run/docker.sock