我有一个在Docker容器内运行的服务。我们现在看到的是如何升级此服务。它开始使用supervisord和/但我们不允许用户访问该supervisord安装。因此,如果我们可以从内部杀死容器,那么supervisord就可以了解该过程现在已经死亡并重新启动它。 (该服务的第一步是获取任何更新。)
这可能吗?
只需运行docker run -it --rm ubuntu bash
并在其中运行kill 1
以阻止bash进程无效 - bash
不会终止它获得的信号(我还没有验证是否信号到了)。
答案 0 :(得分:4)
使用docker run --restart on-failure
而不是使用主管。如果它以非零代码退出,这将自动重新启动您的服务。然后只需使用退出代码0(成功)终止进程,以避免重新启动。