使用容器时,要尽量使用单进程容器,所谓单进程容器,是指在容器运行时,只有一个工作进程。
如果需要存在多个进程协作的时候,要部署为两个容器,比如 PHP 一个容器,MySQL 一个容器,而不要在一个容器中运行这两者。
因为,Docker 本身就是一个非常好的守护进程,它可以完美地管理一个进程,但是如果一个容器中存在多个进程时,你就需要自己维护两个进程的运行状态,比如使用 supervisord ,但这就大大增加了容器维护的难度和不稳定性。
比如在一个容器中同时运行 PHP 和 MySQL,那么如果 PHP 异常退出了,容器该不该连同 MySQL 一起退出?如果不退出,而是不断重启 PHP,那么在容器之外,比如运行 docker ps
是无法了解到 PHP 运行状态的。
所以,使用 docker,就要习惯于单进程容器的方式,既简单,又稳健。
参考使用:脉冲云