今回、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」です。
Copyright © ITmedia, Inc. All Rights Reserved.