如何在 docker 容器崩溃时自动监控并重启它?
how to automatically monitor and restart the docker container when it crashes down?
我目前 运行 两个虚拟服务器 offical ghost image 和 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
它们都运行良好,但过了一段时间(有时是几个小时或一天),其中一个虚拟服务器会崩溃,我必须重新启动容器才能使其正常工作。
请问有什么解决方案可以自动监控docker容器,当它宕机时自动重启?
你应该使用 --restart
(docs):
docker run -d -p 86:2368 --restart always --name home -e "VIRTUAL_HOST=hostname.com" ghost
事实上,更有可能是您容器的主应用程序崩溃了,而不是您的容器。
当 ID #0 的进程在容器中停止或崩溃时,容器会自动停止。
关于您的问题,重启选项(来自 docker 运行 命令)是一种可能性,正如 Andy 所述。
另一种可能是使用supervisord作为容器的主进程。您的应用程序将由 supervisord 启动和监控。
Supervisord 将为您提供很多选项来处理您的应用程序崩溃。您有许多关于日志记录、信号处理的有用选项...
有关详细信息,请参阅 https://docs.docker.com/articles/using_supervisord/ and http://supervisord.org/。
我目前 运行 两个虚拟服务器 offical ghost image 和 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
它们都运行良好,但过了一段时间(有时是几个小时或一天),其中一个虚拟服务器会崩溃,我必须重新启动容器才能使其正常工作。
请问有什么解决方案可以自动监控docker容器,当它宕机时自动重启?
你应该使用 --restart
(docs):
docker run -d -p 86:2368 --restart always --name home -e "VIRTUAL_HOST=hostname.com" ghost
事实上,更有可能是您容器的主应用程序崩溃了,而不是您的容器。
当 ID #0 的进程在容器中停止或崩溃时,容器会自动停止。
关于您的问题,重启选项(来自 docker 运行 命令)是一种可能性,正如 Andy 所述。
另一种可能是使用supervisord作为容器的主进程。您的应用程序将由 supervisord 启动和监控。 Supervisord 将为您提供很多选项来处理您的应用程序崩溃。您有许多关于日志记录、信号处理的有用选项...
有关详细信息,请参阅 https://docs.docker.com/articles/using_supervisord/ and http://supervisord.org/。