第17回 Dockerで植物が育つ様子を自動録画してみよう――その1:古賀政純の「攻めのITのためのDocker塾」(2/2 ページ)
今回からDockerコンテナを使って動画の撮影や活用のための環境を構築する方法をご紹介していきます。Webカメラの使い方や録画データの保存、構築した環境の管理などはどうすればいいのでしょうか――まずは導入準備編です。
そもそもDockerコンテナでUSB接続の機器は使えるのか?
コンピュータを使って動画を撮影するには、Webカメラを使用します。今回は、データ保管用のHPE ProLiantサーバにWebカメラをUSB接続します。サーバでは録画アプリを実行します。一般的には、動画を保存するマシン上で録画アプリを直接稼働させますが、今回はDockerコンテナで録画アプリを稼働させる必要があります。
ここで、ふと疑問が沸きます。「DockerコンテナでホストOSにUSB接続されたWebカメラを使うことができるのか?」ということです。実は、Docker環境においてUSB接続の機器を利用するには、Dockerコンテナが稼働しているホストOSが認識している物理的な周辺機器に関するデバイスファイルにDockerコンテナがアクセスする必要があります。USB接続のWebカメラの場合は、ホストOSの「/dev/video0」というデバイスファイルをコンテナでアクセスできるようにします。具体的には、Dockerコンテナ起動時に、以下のように「--device=/dev/video0:/dev/video0」を付与します。
# docker run -it --device=/dev/video0:/dev/video0 --name test01 centos:centos7.2.1511 /bin/bash
ちなみに、USB接続のWebカメラではなく、SATA接続の光学ドライブをコンテナからマウントして利用する場合は、光学ドライブのデバイスファイル(/dev/sr0など)を「--device=/dev/sr0:/dev/sr0」で指定するだけでは、うまくいきません。光学ドライブに装着したDVD-ROMなどをコンテナからマウントして利用する場合は、さらに「--cap-add=SYS_ADMIN」を付与する必要があります。この「SYS_ADMIN」は、ケイパビリティ・キーと呼ばれ、これ以外にもさまざまなキーが存在します。
また、Dockerではコンテナを特権モードで起動する「--privileged」オプションが存在します。この特権モードでDockerコンテナを起動させると、コンテナからはホストOSの全てのデバイスファイルにアクセスできてしまいますので、セキュリティ上の観点から利用はあまりお勧めできません。企業向けのサービス基盤において、「--privileged」オプションの付与は、慎重に検討してください。「--device」オプション、「--privileged」オプション、ケイパビリティ・キーについては、以下のURLに示すDocker社の公式ドキュメントに情報が掲載されています。
意外と古くから使われている無償の録画アプリMotion
Motion(モーション)は、Linuxで稼働する動画撮影アプリです。無償のソフトウェアですが、その名前からもわかるとおり、被写体のmotion(動き)があったことをリアルタイムに自動的に検知(=動体検知)する機能なども備えています。また、動画だけでなく、静止画像で保存する機能もあります。Linuxの世界では、かなり古くから使われており、自宅や遠隔地の監視カメラなどにも活用できるアプリとして知られています。
Motionは、設定できる項目がたくさんありますが、設定ファイル(motion.conf)の雛形がありますので、Linuxに慣れていれば、導入のハードルはそれほど高くありません。Motionは、Webカメラのデバイス名(通常は、/dev/video0や/dev/video1など)、静止画の保存する時間の間隔、解像度などの各種パラメータを設定ファイル(motion.conf)に記述し、サービスを稼働させます。Motionについては、下記のURLに示すWebサイトに設定ファイルのパラメータの説明が記載されていますので、これを見れば、Motionでできることが一通り分かるかと思います。
次回は録画したデータをWebで利用できるようにするための方法をご紹介します。
古賀政純(こが・まさずみ)
日本ヒューレット・パッカード株式会社 オープンソース・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実践入門」などがある。趣味はレーシングカートとビリヤード
関連記事
- 第16回 1つのDockerコンテナでサービスをたくさん動かすには?(応用編)
Dockerコンテナで複数のサービスを動かすポイントを解説しましたが、今回はその応用編として具体的に3つの方法をご紹介します。 - 第15回 1つのDockerコンテナでサービスをたくさん動かすには?(基礎編)
サービスを稼働させる上で、ハイパーバイザ型の仮想化環境とDockerコンテナの環境では大きな違いがあります。まずは基礎知識から解説しましょう。 - 第14回 「延命措置」で旧システムからDocker環境に移行する方法
古いIT資産をDocker環境へ移行するには多面的な検証が必要です。今回は「延命措置」のシナリオから、実際に古い物理サーバからDocker環境へ移行する手順を紹介します。 - 【古賀政純の「攻めのITのためのDocker塾」】バックナンバー
Copyright © ITmedia, Inc. All Rights Reserved.