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

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

タイムゾーンの設定

 今回、Dockerコンテナの起動時に「-v /etc/localtime:/etc/localtime:ro」という謎のオプションが付与されています。このオプションは、ホストOSの「/etc/localtime」とコンテナ上の「/etc/localtime」を書き込み不可の状態で関連付けることを意味します。しかし、そもそも「/etc/localtime」というのは、一体何者なのでしょうか。

 CentOS 7.xの場合、「/etc/localtime」はゾーン情報を提供しており、日本の場合は、アジア地域の都市のうち東京を指定するため、「/usr/share/zoneinfo/Asia/Tokyo」へのシンボリックリンクになっています。日本は協定世界時(一般的にUTCと呼ばれます)から9時間進んでいる日本標準時(JST)を使用しています。この日本標準時の情報は、「/usr/share/zoneinfo/Asia/Tokyo」というタイムゾーン用のファイルに含まれています。このタイムゾーンのファイルをホストOSとコンテナで共有することで、ホストOSとコンテナで同じタイムゾーンを使用できます。

 ホストOSとコンテナで同じタイムゾーンを使用するには、ホストOSのタイムゾーンのファイルとコンテナのタイムゾーンのファイルをボリュームとして共有します。今回の場合は、ホストOS側で日本標準時を設定していますので、コンテナ側でも日本標準時を使用することになります。実は、Motionで録画した映像には録画年月日が記されるため、時刻を正しく設定しておかないと、動画ファイルに間違った時間が表示されて記録されてしまいます。もちろん、ホストOS側ではNTPサーバなどの時刻同期サーバと通信して正確な時を刻むようにしておくことも必要ですが、とりあえずは日本標準時で設定されているホストOSとタイムゾーンのファイルを共有しておけば、コンテナ側でホストOSでタイムゾーンが異なってしまう事態を回避できます。

植物の様子を確認してみる

 Dockerコンテナを起動できたら、USB接続のWebカメラで撮影した画像・映像が保存されているかをホストOS上のブラウザから確認してみましょう。コンテナのIPアドレスをホストOSから調べます。


# docker exec motion0001 ip -4 a |grep inet
    inet 127.0.0.1/8 scope host lo
    inet 172.17.0.2/16 scope global eth0

 上記より、Dockerコンテナのmotion0001のIPアドレスは、「172.17.0.2/16」であることが分かりましたので、Webブラウザでコンテナが提供する画像・録画データにアクセスします。アクセス先のURLは「http://コンテナのIPアドレス/motion」です。

ホストOSのWebブラウザから、植物の画像や動画ファイルを確認
植物の画像

Copyright © ITmedia, Inc. All Rights Reserved.