Dockerコンテナを使って動画の撮影や活用のための環境を構築する方法をご紹介します。今回はこれまでに準備した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
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」を指定しています。
Copyright © ITmedia, Inc. All Rights Reserved.