cygnus-twitter docker¶
コンテンツ:
始める前に¶
docker がインストールされ、実行されている必要があります。この公式スタートガイドをチェックしてください。
イメージを取得¶
ソースからのビルド¶
fiware-cygnus
リポジトリをクローンすることから始めます :
$ git clone https://github.com/telefonicaid/fiware-cygnus.git
ディレクトリを変更します :
$ cd fiware-cygnus/docker/cygnus-twitter
次のコマンドを実行します :
$ docker build -t cygnus-twitter .
しばらく時間がかかることがあります。完了したら、docker で利用可能なイメージを確認するには、次のように入力します :
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
cygnus-twitter latest df556c817163 About a minute ago 1.132 GB
centos 6 61bf77ab8841 4 weeks ago 228.9 MB
Docker Hub イメージの使用¶
イメージを最初から構築する代わりに、hub.docker.com からダウンロードすることができます :
$ docker pull fiware/cygnus-twitter
上記と同じ方法でリストすることができます :
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
cygnus-twitter latest df556c817163 About a minute ago 1.132 GB
centos 6 61bf77ab8841 4 weeks ago 228.9 MB
イメージを使用¶
そのまま¶
cygnus-twitter イメージ(最初から作成したもの、hub.docker.comからダウンロードしたもの)は、Twitter からのツイートを受信して HDFS ストレージに保存する Cygnus エージェントを実行することができます。
ターミナルで次のように入力して、このイメージのコンテナを開始します:
$ docker run cygnus-twitter
直後に、cygnus-twitter ロギング・トレースが出力されるでしょう :
+ exec /usr/lib/jvm/java-1.7.0/bin/java -Xmx20m -Dflume.root.logger=INFO,console -cp '/opt/apache-flume/conf:/opt/apache-flume/lib/*:/opt/apache-flume/plugins.d/cygnus/lib/*:/opt/apache-flume/plugins.d/cygnus/libext/*' -Djava.library.path= com.telefonica.iot.cygnus.nodes.CygnusApplication -f /opt/apache-flume/conf/agent.conf -n cygnus-twitter
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/apache-flume/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/apache-flume/plugins.d/cygnus/lib/cygnus-twitter-0.1.0_SNAPSHOT-jar-with-dependencies.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/apache-flume/plugins.d/cygnus/libext/cygnus-common-0.13.0_SNAPSHOT-jar-with-dependencies.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
time=2016-05-05T09:57:55.150UTC | lvl=INFO | corr= | trans= | srv= | subsrv= | function=main | comp= | msg=com.telefonica.iot.cygnus.nodes.CygnusApplication[166] : Starting Cygnus, version 0.13.0_SNAPSHOT.5200773899b468930e82df4a0b34d44fd4632893
...
...
time=2016-05-05T09:57:56.287UTC | lvl=INFO | corr= | trans= | srv= | subsrv= | function=main | comp=cygnus-twitter | msg=com.telefonica.iot.cygnus.nodes.CygnusApplication[286] : Starting a Jetty server listening on port 8081 (Management Interface)
2番目のターミナルシェルで、実行中のコンテナをチェックすることができます :
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9ce0f09f5676 cygnus-twitter "/cygnus-entrypoint. About a minute ago Up About a minute 5050/tcp, 8081/tcp focused_kilby
上のコンテナの IP アドレスを確認するには、次のようにします :
$ docker inspect 9ce0f09f5676 | grep \"IPAddress\"
"IPAddress": "172.17.0.13",
2番目のターミナルのシェルで、コンテナの IP アドレスが取得できたら、Cygnusのバージョンを確認することができます:
$ $ curl "http://172.17.0.13:8081/v1/version"
{"success":"true","version":"0.13.0_SNAPSHOT.5200773899b468930e82df4a0b34d44fd4632893"}
次のように、コンテナを停止することができます :
$ docker stop 9ce0f09f5676
9ce0f09f5676
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
特定の構成の使用¶
上記のように、イメージと共に配布されるデフォルトの設定は、テストに適さないかもしれない特定の値が設定されいます。具体的には :
- ストリーミング・ツイートを一時ファイル(/tmp)に格納する場合にのみ機能
- ロギングレベルが
INFO
- ロギングアペンダが
console
別の値で上記の値を変更する必要があるかもしれません。
Docker ファイルの編集¶
一番簡単な方法は、docker/cygnus-twitter
下のファイル、Dockerfile
あるいは agent.conf
、その両方を編集して、cygnus-twitter イメージを最初から作成することです。
docker イメージをを完全に制御できます。
環境変数¶
環境変数に関連付けられたこれらのパラメータは、-e
オプションを使用してコマンドラインで簡単に上書きすることができます。たとえば、log4j のロギング・レベルを変更する場合は、次のコマンドを実行します :
$ docker run -e LOG_LEVEL='DEBUG' cygnus-twitter
ボリュームの使用¶
もう1つの可能性は、ボリューム(-v
オプション)を持つコンテナを起動し、コンテナ内の設定ファイル全体を、ローカルバージョンのファイルでマップすることです :
$ docker run -v /absolute/path/to/local/agent.conf:/opt/apache-flume/conf/agent.conf cygnus-twitter
もちろん、ボリュームと環境変数の上書きを組み合わせることもできます :
$ docker run -v /absolute/path/to/local/agent.conf:/opt/apache-flume/conf/agent.conf -e LOG_LEVEL='DEBUG' cygnus-twitter