如何自动监视并重新启动docker容器,当它崩溃了?

我目前运行两个虚拟服务器与官方鬼图像和nginx-proxy图像,这是我的积累。

 docker run -d -p 86:2368 --name home -e "VIRTUAL_HOST=hostname.com" ghost docker run -d -p 85:2368 --name home-blog -e "VIRTUAL_HOST=blog.hostname.com" ghost 

他们都运行良好,但过了一段时间(有时几个小时或一天),其中一个虚拟服务器将打破,我必须重新启动容器,使其工作。

我不知道是否有任何解决scheme来自动监视docker容器,并重新启动它时,它?

你应该使用--restart ( docs ):

 docker run -d -p 86:2368 --restart always --name home -e "VIRTUAL_HOST=hostname.com" ghost 

事实上,它更可能是你的容器的主要应用程序崩溃,而不是你的容器。

当ID#0的进程在容器中停止或崩溃时,容器自动停止。

关于你的担心,正如Andy所说的那样,重启选项(来自docker run命令)是一种可能性。

另一种可能是使用supervisord作为容器的主要stream程。 您的应用程序将由supervisord启动和监控。 Supervisord将为您提供很多选项以处理您的应用程序崩溃。 你有很多有用的选项关于日志logging,信号处理…

有关更多详细信息,请参阅https://docs.docker.com/articles/using_supervisord/和http://supervisord.org/