Docker容器内多进程管理(一)-Supervisor

导读 Docker在设计时并不推崇在一个容器中运行多个进程,但在一些实际的场景中很多都可能需要在一个容器中,同时运行多个程序。在非容器的环境下系统初始化的时候,都会启动一个init进程,其余的进程都由它来管理,但容器环境下这种后台启动进程的方式都不可用。目前主要有两个工具,一个是Supervisor,另一个是Monit。本篇先来介绍Supervisor,Monit会在之后的文章中再做详解。

传统环境下同时运行多个进程非常简单,系统初始化启动一个init或者systemctl进程,其余的进程都由它来管理。在容器环境下没有init进程,启动一个Docker容器,只能让它运行一个前台程序。
那么有办法解决这个问题吗?

目前主要有两个工具,一个是Supervisor,另一个是Monit。本篇先来介绍Supervisor,Monit会在之后的文章中再做详解。

一、Supervisor介绍及原理

Supervisor是一个C/S架构进程管理工具,通过它可以监控和控制其他的进程,同时它自身提供了一个WebUI,可以在WebUI进行start,stop,restart操作。由Supervisor管理的进程,都是它的子进程。

在Linux系统启动之后,第一个启动的用户态进程是/sbin/init ,它的PID是1,其余用户态的进程都是init进程的子进程。Supervisor在Docker容器里面充当的就类似init进程的角色,其它的应用进程都是Supervisor进程的子进程。通过这种方法就可以实现在一个容器中启动运行多个应用。

以下是在容量里面看到的由Supervisor管理mysql-server和apache的进程情况

Docker容器内多进程管理(一)-SupervisorDocker容器内多进程管理(一)-Supervisor

二、Supervisor配置与实例
1、Supervisor安装

官网上提供了很多方法来安装Supervisor,本文介绍两种最常用的方法

Docker容器内多进程管理(一)-SupervisorDocker容器内多进程管理(一)-Supervisor

yum直接安装

Docker容器内多进程管理(一)-SupervisorDocker容器内多进程管理(一)-Supervisor

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值