ニュース
第18回 Dockerで植物が育つ様子を自動録画してみよう――その2:古賀政純の「攻めのITのためのDocker塾」(2/3 ページ)
Dockerコンテナを使って動画の撮影や活用のための環境を構築する方法をご紹介します。今回は環境を具体的に構築する手順を取り上げます。
以下は、Motionとhttpdが稼働するDockerイメージを生成するためのDockerfileの例です。今回、Dockerコンテナのテンプレートは、CentOS 7.2のOSイメージを使用します。また、Motionとhttpdといった複数のサービスが同時に一つのDockerコンテナ内で稼働しますので、連載第16回でご紹介したように、Supervisorを利用してMotionとhttpdを稼働、監視するようにします。そのため、Dockerfileにはhttpd、motionだけでなく、Supervisorの導入工程も含まれています。
# mkdir /root/supervisord_httpd_motion # cd /root/supervisord_httpd_motion/ # vi Dockerfile FROM centos:centos7.2.1511 MAINTAINER Masazumi Koga ENV container docker RUN yum install -y \ ↓Motion RPMパッケージの入手に必要なリポジトリを追加 http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm \ && yum clean all RUN yum update -y \ && yum clean all ↓iprouteとSupervisorとhttpdとMotionをインストール RUN yum install -y iproute supervisor httpd motion \ && yum clean all RUN mkdir -p /var/www/html/motion ←画像・動画データ保存用のディレクトリを作成 COPY motion.conf /etc/motion/ ←Motionの設定ファイルを配置 COPY supervisord.conf /etc/ ←Supervisorの設定ファイルを配置 RUN chmod 600 /etc/supervisord.conf ←Supervisorの設定ファイルの閲覧権限を設定 EXPOSE 80 9001 ←Webアクセスに必要なポートを設定 ENTRYPOINT ["/usr/bin/supervisord"] ←Supervisorのデーモンを起動
上記のDockerfileについて簡単に解説します。
必要なRPMパッケージの導入
- 上記のDockerfileでは、まずMotionのRPMパッケージのインストールに必要なnux-dextopリポジトリを追加しています。
- supervisorのインストールに必要なEPELリポジトリも、nux-dextopリポジトリのインストール時に依存関係を自動的に解決されてインストールされます。
- iprouteはipコマンドなどを提供するRPMパッケージです。コンテナに割り当てられたIPアドレスを表示する際に必要になりますのでインストールしておきます。
- 必要なRPMパッケージとしてsupervisor、httpd、motionをインストールします。
画像ファイルや動画ファイルの保存用ディレクトリ
- Dockerコンテナ内で録画した動画データの保管場所となる「/var/www/html/motion」ディレクトリを作成しています。
- httpd RPMパッケージが標準で提供するWebコンテンツ用のディレクトリは、/var/www/htmlディレクトリですので、動画データの保存先としてコンテナ内の/var/www/html/motionディレクトリを作成しておけば、httpd RPMパッケージが提供する設定を変更することなく、httpdサービスを起動するだけで、クライアントに動画データをHTTPプロトコルで提供できます。
Motionの設定ファイル
- COPY行ではMotionの設定ファイルであるmotion.confをコンテナ内の/etc/motionディレクトリにコピーしています。
- このmotion.confファイル自体は、Dockerfileが置いたホストOS上の作業用ディレクトリ(今回はホストOS上の/root/supervisord_httpd_motionディレクトリ)にあらかじめ配置しておく必要があります。
Supervisorの設定ファイル
- 次のCOPY行でMotionとhttpdを稼働させるためのSupervisorの設定ファイルsupervisord.confファイルをコンテナ内の/etcディレクトリにコピーしています。
- SupervisorのWeb管理画面へのアクセスを行うためのアカウントとパスワードは/etc/supervisord.confファイルに暗号化されずに平文(ひらぶん)で記述します。したがって、「chmod 600 /etc/supervisord.conf」により、/etc/supervisord.confファイルのアクセス権限を「所有者のみが読み込みと書き込み可能」に設定します。
以上で、Motionとhttpdをsupervisordで起動・監視するDockerコンテナのためのDockerfileが完成しました。
関連記事
- 第17回 Dockerで植物が育つ様子を自動録画してみよう――その1
今回からDockerコンテナを使って動画の撮影や活用のための環境を構築する方法をご紹介していきます。Webカメラの使い方や録画データの保存、構築した環境の管理などはどうすればいいのでしょうか――まずは導入準備編です。 - 第16回 1つのDockerコンテナでサービスをたくさん動かすには?(応用編)
Dockerコンテナで複数のサービスを動かすポイントを解説しましたが、今回はその応用編として具体的に3つの方法をご紹介します。 - 第15回 1つのDockerコンテナでサービスをたくさん動かすには?(基礎編)
サービスを稼働させる上で、ハイパーバイザ型の仮想化環境とDockerコンテナの環境では大きな違いがあります。まずは基礎知識から解説しましょう。 - 【古賀政純の「攻めのITのためのDocker塾」】バックナンバー
Copyright © ITmedia, Inc. All Rights Reserved.