一、使用 Supervisor 来管理进程
Docker 容器在启动的时候开启单个进程,例如,一个ssh 或者Apache 的daemon服务。
但我们经常需要在一个机器上开启多个服务,这可以有很多方法,最简单的就是把多个启动命令放到一个启动脚本里面,启动的时候直街启动这个脚本。
例如: docker run -d 镜像 /run.sh
另一种方法就是使用进程管理工具 supervisor 。
进程管理工具 supervisor 来管理容器中的多个进程。使用Supervisor 可以更好的控制、管理、重启我们希望运行的进程。
Supervisor 是一个进程控制系统,它是一个C/S系统(注意:其提供WEB借口给用户查询和控制),它允许用户去监控和控制在类UNIX系统的进程。
在这里我们演示一下如何同时使用ssh和Apache服务。
准备工作;(这里ip是 192.168.221.141)
[root@gy ~]# systemctl start docker
[root@gy ~]# setenforce 0
[root@gy ~]# vim /etc/sysctl.conf
[root@gy ~]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.ip_forward = 1
配置:
首先创建一个Dockerfile,
[root@gy ~]# mkdir -p /docker/apache
[root@gy ~]# cd /docker/apache
[root@gy apache]# vim Dockerfile
[root@gy apache]# vim Dockerfile
在Dockerfile中写入一下内容;
然后再在Apache目录下,创建supervisord.conf 配置文件
[root@gy apache]# vim supervisord.conf
接下来,创建image
[root@gy apache]# docker build -t centos:superviord .
查看镜像
启动 supervisor 容器(由于后面需要80端口,这里就用-P指定端口了)
[root@gy ~]# docker run -dit -P -d centos:superviord
测试 :访问容器提供的http://192.168.221.141:32768
或ssh
[root@gy ~]# ssh root@192.168.221.141