複数のサービスを稼働させるために、ラッパースクリプトを使わない方法もあります。その一つが、「Supervisor」(スーパーバイザ)と呼ばれるソフトウェアの導入です。
Supervisorは、複数のプロセスをまとめて管理するもので、プロセスの死活監視、プロセスのログの取得、プロセスの再起動などが行えます。元々はプロセス管理のソフトウェアですので、非Docker環境においても利用でき、複数のプロセスを同時にバックグラウンドで稼働させ、かつ、監視したい場合に有用です。特にDocker環境では複数のデーモンをコンテナ内で同時稼働させるツールとして、広く利用されています。
Supervisorは、稼働させたいサービスを「/etc/supervisord.conf」ファイルに記述します。以下は、httpdデーモンとvsftpdデーモンを同時に稼働させる場合の「/etc/supervisord.conf」ファイルの例です。
# cat supervisord.conf [supervisord] nodaemon=true [program:httpd] command=/usr/sbin/httpd -k start [program:vsftpd] command=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
上記の設定例ではhttpdとvsftpdの起動に関する処理を1つのsupervisord.confファイルに記述していますが、サービスごとに設定ファイルを分けて記述し、「/etc/supervisord.conf」ファイルからサービスごとの設定ファイルをロードする方法もあります。Supervisorの設定ファイルに関する情報はこちらのWebサイトにあります。監視対象となるプロセスを細かく制御できますので、ご一読をお勧めします。
Docker環境の場合、コンテナにSupervisorをインストールし、あらかじめ用意しておいた上記のsupervisord.confファイルをコンテナ内の/etcディレクトリにコピーするのが一般的です。以下に、Supervisorでhttpdとvsftpdを同時に稼働させるDockerfileを示します。上記のsupervisord.confファイルは、Dockerfileと同じディレクトリに用意してください。
# mkdir /root/supervisor_httpd_vsftpd # cd /root/supervisor_httpd_vsftpd # vi Dockerfile FROM centos:centos7.2.1511 MAINTAINER Masazumi Koga ENV container docker ENV http_proxy http://proxy.proxy.your.site.com:8080 ENV https_proxy http://proxy.proxy.your.site.com:8080 RUN yum update -y && yum clean all RUN yum install -y epel-release RUN yum install -y supervisor iproute httpd vsftpd && yum clean all RUN echo "Hello Apache." > /var/www/html/test1.html RUN echo "Hello Vsftpd." > /var/ftp/pub/test2.txt COPY supervisord.conf /etc/ EXPOSE 80 ENTRYPOINT ["/usr/bin/supervisord"]
このDockerfileでは、ホストOS上に用意したsupervisord.confファイルをコンテナ内の/etcディレクトリにCOPYを使ってコピーしています。また、ENTRYPOINTで「/usr/bin/supervisord」を指定することにより、コンテナ起動時に「/usr/bin/supervisord」が起動します。すると、コンテナ内の「/etc/supervisord.conf」ファイルに記載されたサービス群(今回はhttpdデーモンとvsftpdデーモン)が起動します。実際にコンテナを起動し、プロセスを確認してみてください。
# pwd /root/supervisord_httpd_vsftpd # docker build -f ./Dockerfile -t centos:c7apache_ftp01 --no-cache=false . # docker run -itd --name web0003 centos:c7apache_ftp01 # docker exec -it web0003 ps -ef
Copyright © ITmedia, Inc. All Rights Reserved.