第18回 Dockerで植物が育つ様子を自動録画してみよう――その2:古賀政純の「攻めのITのためのDocker塾」(3/3 ページ)
Dockerコンテナを使って動画の撮影や活用のための環境を構築する方法をご紹介します。今回は環境を具体的に構築する手順を取り上げます。
サービス起動・監視用の設定ファイルを作成する
次に、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
今回からDockerコンテナを使って動画の撮影や活用のための環境を構築する方法をご紹介していきます。Webカメラの使い方や録画データの保存、構築した環境の管理などはどうすればいいのでしょうか――まずは導入準備編です。 - 第16回 1つのDockerコンテナでサービスをたくさん動かすには?(応用編)
Dockerコンテナで複数のサービスを動かすポイントを解説しましたが、今回はその応用編として具体的に3つの方法をご紹介します。 - 第15回 1つのDockerコンテナでサービスをたくさん動かすには?(基礎編)
サービスを稼働させる上で、ハイパーバイザ型の仮想化環境とDockerコンテナの環境では大きな違いがあります。まずは基礎知識から解説しましょう。 - 【古賀政純の「攻めのITのためのDocker塾」】バックナンバー
Copyright © ITmedia, Inc. All Rights Reserved.