次に、Motionとhttpdを稼働・監視するsupervisord.confファイルをホストOS上で作成します。
# pwd /root/supervisord_httpd_motion/ # vi supervisord.conf [supervisord] nodaemon=true [inet_http_server] port = 0.0.0.0:9001 ←クライアントのWebブラウザでSupervisorの管理画面にアクセスする場合に必要 username = admin ←SupervisorのWeb管理画面にログインするためのアカウント password = abcd1234 ←SupervisorのWeb管理用のアカウントのパスワード [program:motion] command=/usr/bin/motion -n ←録画アプリを起動 [program:httpd] command=/usr/sbin/httpd -DFOREGROUND ←Webサーバを起動
Supervisorにおいて、Webブラウザ経由でサービスの監視を行うには、上記の例のように、「[inet_http_server]」の直下にアクセスを許可するネットワークとポート番号(0.0.0.0:9001)、ユーザー名(username =で指定)とパスワード(password =で指定)を記述しています。今回の例ではユーザー名「admin」、パスワード「abcd1234」でHTTPプロトコルを使って、DockerコンテナのIPアドレスに9001番ポートを付与することで、SupervisorのWeb管理画面にアクセスできるようになります。
次に、録画アプリの設定ファイルmotion.confをホストOS上で作成します。設定ファイルは、Motionに付属しているものを入手し、カスタマイズするのがよいでしょう。まずはMotionのRPMパッケージを入手し、ホストOS上に展開します。CentOS 7.xの環境において、RPMパッケージをインストールするのではなく、入手するだけの場合はyumdownloaderコマンドが有用です。yumdownloaderコマンドは、yum-utils RPMパッケージに含まれていますので、インストールされていない場合は、yumコマンドでインストールしておきます。
# yum install -y yum-utils # yum install -y \ http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm # yumdownloader motion # ls Dockerfile motion-3.3.0.trunkREV557-11.el7.nux.x86_64.rpm supervisord.conf
ホストOS上に、「motion-3.3.0.trunkREV557-11.el7.nux.x86_64.rpm」がダウンロードできましたので、rpm2cpioコマンドとcpioコマンドを使えば、RPMパッケージを展開し、中に含まれているファイルを取り出すことができます。以下のように、入手したMotionのRPMパッケージをホストOS上で展開し、RPMパッケージに付属のmotion.confファイルを取り出します。
# pwd /root/supervisord_httpd_motion/ # rpm2cpio motion-3.3.0.trunkREV557-11.el7.nux.x86_64.rpm |cpio -id # cp ./etc/motion/motion.conf .
取り出したmotion.confファイルをカスタマイズします。
# vi motion.conf
設定ファイルmotion.confの中身はDockerと直接関係がありませんので、今回はパラメータの詳しい説明を省きますが、RPMパッケージに付属しているmotion.confファイルにおいて、筆者が変更したパラメータを以下に示しておきます。これ以外のパラメータは、RPMパッケージに付属のmotion.confファイルのものをそのまま使用しました。
| パラメータ | 意味 |
|---|---|
| setup_mode on | onの場合は、Motionが非デーモンモードで起動 |
| ffmpeg_timelapse 60 | 60秒ごとに画像フレームを保存した動画を生成 |
| sdl_threadnr 0 | SDLウィンドウで表示するMotionのスレッド数(デフォルトは0) |
| snapshot_interval 60 | 60秒毎にスナップショットを撮影 |
| target_dir /var/www/html/motion | 画像や動画の出力先ディレクトリを/var/www/html/motionに設定 |
| stream_quality 100 | 生成されたJPEG画像のクォリティを100%に設定 |
| stream_motion on | 動体検出時、stream_maxrateに指定したfps値に変更。通常は1fps |
| stream_maxrate 30 | 動体検出時は30fpsに設定 |
| stream_localhost off | ストリーム接続をローカルホストのみに制限しない |
| webcontrol_localhost off | Web経由によるMotionの設定をローカルホストのみに制限しない |
コンテナが生成する画像・録画データを保管するためのディレクトリ「/var/www/html/motion」をホストOS上に作成しておきます。
# mkdir -p /var/www/html/motion
次回はいよいよ、これまでに用意したDocker環境を使って撮影までのステップを紹介します。
日本ヒューレット・パッカード株式会社 オープンソース・Linuxテクノロジーエバンジェリスト。兵庫県伊丹市出身。1996年頃からオープンソースに携わる。2000年よりUNIXサーバーのSE及びスーパーコンピューターの並列計算プログラミング講師、SIを経験。2006年、米国HPからLinux技術の伝道師として「OpenSource and Linux Ambassador Hall of Fame」を2年連続受賞。プリセールスMVPを4度受賞。現在は日本HPにて、Linux、FreeBSD、Hadoopなどのサーバー基盤のプリセールスSE、文書執筆を担当。Red Hat Certified Virtualization Administrator, Novell Certified Linux Professional, Red Hat Certified System Administrator in Red Hat OpenStack, Cloudera Certified Administrator for Apache Hadoopなどの技術者認定資格を保有。著書に「CentOS 7実践ガイド」「Ubuntu Server実践入門」などがある。趣味はレーシングカートとビリヤード
第17回 Dockerで植物が育つ様子を自動録画してみよう――その1
第16回 1つのDockerコンテナでサービスをたくさん動かすには?(応用編)
第15回 1つのDockerコンテナでサービスをたくさん動かすには?(基礎編)Copyright © ITmedia, Inc. All Rights Reserved.