Docker技术剖析--Supervisor管理

来源:互联网 发布:mac office 生成目录 编辑:程序博客网 时间:2024/05/16 02:11

一、使用supervisor来管理进程

docker容器在启动的时候开启单个进程,比如,一个ssh或者apache的daemon服务,但我们经常需要在一个机器上开启多个服务,这个有很多办法,最简单的就是把多个启动的命令放在一个启动脚本里面,启动的时候直接启动这个脚本。

另外就是安装进程的管理工具。

supervisor是一个进程控制系统,它是一个C/S系统(注意:其提供web接口给用户查询和控制)它允许用户去监控和控制在类unix系统的进程 这次使用ssh和apache服务。

一、配置

前提:需要安装docker,可以参考我的这篇文章:http://blog.csdn.net/qq_39591494/article/details/77712618

首先创建一个dockerfile,内容如下:

创建一个dockerfile目录


dockerfile的文件内容如下:

#images of apache
FROM docker.io/centos:latest
#install supervisor
RUN yum -y install python-setuptools
RUN /usr/bin/easy_install supervisor
#install ssh apache
RUN yum install -y openssh-server httpd sudo
RUN useradd admin
RUN echo "admin:admin" | chpasswd
RUN echo "admin ALL=(ALL) ALL" >> /etc/sudoers
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
RUN ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
RUN mkdir -p /var/run/sshd
RUN mkdir -p /var/log/supervisor
RUN sed -ri 's/session    required     pam_loginuid.so/#session    required     pam_loginuid.so/g' /etc/pam.d/sshd
RUN sed -ri 's/#ServerName www.example.com:80/ServerName www.benet.com/g' /etc/httpd/conf/httpd.conf
COPY supervisord.conf /etc/supervisor/supervisord.conf
EXPOSE 22 80
CMD ["/usr/bin/supervisord"]



2)创建image


创建的过程如下:


创建完成之后我们查看镜像


启动我们的supervisor容器


我们打开client访问测试。



二、docker compose项目

compose项目简介

compose项目来源于之前的fig项目,使用python代码编写的。compose项目主要用于编排部署基于docker的应用。本身docker/swarm配合度很高。

docker compose是docker编排服务的一部分,可以让用户在其他平台快速安装docker,swarm可以让docker容器在集群中高效运转,而compose可以让用户在集群中部署分布式应用。docker compose属于一个应用层的服务,用户可以定义哪个容器组运行哪个应用。

dockerfile可以让用户管理一个单独的应用容器,而compose则允许用户在一个模块中定义一组相关联的应用容器,例如一个调度器。两个web容器加上后端数据库等。


在安装compose之前,先安装pip

注:pip类似于redhat里面的yum,安装python包很方便

[root@localhost ~]# wget https://bootstrap.pypa.io/get-pip.py           [root@localhost ~]# python get-pip.py         


然后在安装compose

[root@localhost ~]# pip install docker-compose


[root@localhost ~]# ln -s /usr/bin/docker-compose /usr/local/bin/

安装成功后,可以查看docker-compose的版本和命令的用法

docker-compose -v


docker-compose -h


docker-compose命令说明
大多数compose命令都是允许于一个或者多个服务的,如果服务没有指定,该命令将会应用到所有服务
build
创建或者在建服务
help
显示命令的帮助和使用信息
kill
通过发送sigkill的信号强制停止运行的容器,这个信号可以选择性的通过
logs
显示服务的日志输出
port
为端口绑定输出公共信息
ps
显示容器
pull拉取服务镜像
rm
删除停止的容器
run
在服务上运行一个一次性命令
scale
设置一个服务启动的容器数量,数量可以用service=num指定
start
启动已经存在的容器作为一个服务
stop
停止允许的容器而不是删除它们
up
为一个服务构建,创建,启动,附加到容器 (这只是一部分后面还会详细说明)

下面我们创建一个web项目:一个haproxy,挂载三个web容器

docker-haproxy目录,作为项目工作目录,并在其中有两个子目录haproxy和web

[root@localhost ~]# mkdir -p /root/docker-haproxy/{haproxy,web}

在/root/docker-haproxy/目录下创建docker-compose.yml文件

在/root/docker-haproxy/haproxy目录下创建haproxy的主配置文件haproxy.cfg

在/root/docker-haproxy/web目录下存放web站点的网页文件

docker-compose.yml内容如下:


主配置文件haproxy.cfg内容如下:


存放web站点的网页文件内容如下:


配置完成后运行compose项目:

在docker-haproxy目录下执行docker-compose up -d 来启动应用


接下来我们拿客户机访问本机IP地址http://192.168.35.136/     


访问本机IP地址http://192.168.35.136:70


希望对您有所帮助,再见


原创粉丝点击