第19回 Dockerで植物が育つ様子を自動録画してみよう――その3古賀政純の「攻めのITのためのDocker塾」(1/3 ページ)

Dockerコンテナを使って動画の撮影や活用のための環境を構築する方法をご紹介します。今回はこれまでに準備したDocker環境で実際に撮影、活用するまでの流れを取り上げます。

» 2016年03月30日 08時00分 公開

※バックナンバーはこちら

Dockerイメージのビルド、コンテナの実行

 Dockerfile、supervisord.conf、motion.confが用意できたら、Dockerイメージをビルドします。今回のDockerイメージ名は、「centos:c7motion01」としました。


# pwd
/root/supervisord_httpd_motion/
# docker build -f ./Dockerfile -t centos:c7motion01 --no-cache=false .

 いよいよ、ホストOS側でDockerコンテナを起動します。コンテナ名は「motion0001」としました。


# docker run -itd \
--device=/dev/video0:/dev/video0 \
-v /var/www/html/motion:/var/www/html/motion:rw \
-v /etc/localtime:/etc/localtime:ro \
--name motion0001 centos:c7motion01

 DockerコンテナからホストOSに接続されたUSB機器を利用する場合は、「--device=/dev/video0:/dev/video0」を付与し、コンテナを起動する必要がありますので、忘れないようにしてください。この時、「--privileged」オプションを付与せずに非特権モードでコンテナが起動し、Webカメラが利用できている点に注意してください。また、実際にコンテナ上で見えているデバイスファイル一覧を表示し、「--privileged」オプションを付与した場合との違いも確認してみるとよいでしょう。以下のように、コンテナmotion0001から見えるデバイスファイルは、ホストOSのデバイスファイルの一部だけに限定されていることが分かります。


# docker exec motion0001 ls -l /dev
total 0
crw-------. 1 root root  136,   7 Feb 29 05:35 console
lrwxrwxrwx. 1 root root        13 Feb 29 05:35 fd -> /proc/self/fd
crw-rw-rw-. 1 root root    1,   7 Feb 29 05:35 full
c---------. 1 root root   10, 229 Feb 29 05:35 fuse
lrwxrwxrwx. 1 root root        11 Feb 29 05:35 kcore -> /proc/kcore
drwxrwxrwt. 2 root root        40 Feb 29 05:35 mqueue
crw-rw-rw-. 1 root root    1,   3 Feb 29 05:35 null
lrwxrwxrwx. 1 root root         8 Feb 29 05:35 ptmx -> pts/ptmx
drwxr-xr-x. 2 root root         0 Feb 29 05:35 pts
crw-rw-rw-. 1 root root    1,   8 Feb 29 05:35 random
drwxrwxrwt. 2 root root        40 Feb 29 05:35 shm
lrwxrwxrwx. 1 root root        15 Feb 29 05:35 stderr -> /proc/self/fd/2
lrwxrwxrwx. 1 root root        15 Feb 29 05:35 stdin -> /proc/self/fd/0
lrwxrwxrwx. 1 root root        15 Feb 29 05:35 stdout -> /proc/self/fd/1
crw-rw-rw-. 1 root root    5,   0 Feb 29 05:35 tty
crw-rw-rw-. 1 root root    1,   9 Feb 29 05:35 urandom
crw-rw----. 1 root video  81,   0 Feb 29 05:35 video0
crw-rw-rw-. 1 root root    1,   5 Feb 29 05:35 zero

コンテナ内で生成された録画データは、ホストOSに保存

 Dockerコンテナのmotion0001には、「/var/www/html/motion」ディレクトリに画像・録画データを保存するようにパラメータを設定したmotion.confファイルが含まれています。そのため、ホストOSの「/var/www/html/motion」ディレクトリと、コンテナ内の「/var/www/html/motion」ディレクトリを「-v」オプションで関連付けることによって、Dockerコンテナ内で生成された画像・録画データがホストOSの「/var/www/html/motion」ディレクトリに保管されます。

 これにより、ホストOS側の「/var/www/html/motion」ディレクトリに画像・録画データが残る仕組みになります。オプションに指定した末尾の「:rw」は、「r」が読み込み可能、「w」が書き込み可能を意味します。コンテナからホストOSのディレクトリにファイルを書き込みますので、時間が経過した後でも、管理者がすぐに理解できるように、明示的に「rw」を指定しています。

ホストOSのディレクトリにデータを記録
       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ