NGSI-LDにも挑戦


データ仕様の現状と課題
スマートシティの標準規格(案)
データモデルのユースケース
ツール


Column
Link
用語集

Coppell

Technologies

 2. PCへのインストール 3.5節


3.5.Mongo-DBとFiware/Orionの起動
2022年8月10日
 Dockerの用語ですが、いくつかのプログラムが組み合わさって実行可能な状態になった塊りをコンテナと言います。このコンテナを転送可能な形にパッキングしたものをimageと言います。imageには名前がついていますが、バージョンを指定することもできます。例えば、Mongo-DBのVer.4.4は、コロンで区切って"mongo:4.4"と表現します。バージョン部分はTagと呼ぶのですが、数値だけでなく、文字列が入る場合もあります。
imageはインターネット上のDockerHubというサイトに格納されています 。例えば、以下の様な感じです。

 まずは、WSLのインストールで作成したUbuntu (Linuxのひとつ) を起動します。WindowsでUbuntuという同じ名前のプログラムがインストールされているので、スタートボタンか検索から探して起動します。Linuxの名前もUbuntuで、Windows上のプログラムもUbuntuなので、本書で区別する場合にはUbuntuツール、Ubuntu OSと呼ぶことにします。Ubuntuツールを起動するとコマンドプロンプトの様なウインドウが開きますが、これがBashです。このBashはWindows上で動いているのに、Ubuntu OSに対してコマンドを発行できます。
 DockerHubからimageを取得するには、UbuntuのBashでdockerコマンドを用います。
 Bashで、
    docker pull mongo:4.4
と打ちます。そうすると、下のようにMongo-DBのバージョン4.4のimageがダウンロードされます。因みに、Bash上でのコピーとペーストは右クリックです。例えば、前記のコマンドをWindows上でCtrl+cなどでコピーし、Bashで右クリックするとそのまま貼り付けることができます。
harry@MSI:~$ docker pull mongo:4.4
4.4: Pulling from library/mongo
e0b25ef51634: Pull complete
c7a086fc80ea: Pull complete
7a6592c2fb05: Pull complete
5dad2281c276: Pull complete
34073132290c: Pull complete
fd66acd9aeb7: Pull complete
f8c57c4e1a23: Pull complete
9744d80c4b59: Pull complete
fc817eca8f95: Pull complete
d81c93cf7d21: Pull complete
Digest: sha256:25c874a0ef870085269317aec259f0aa619c272804bc990a83fb17174cdfd2b2
Status: Downloaded newer image for mongo:4.4
docker.io/library/mongo:4.4
harry@MSI:~$

次に、Fiware/Orionも持ってきましょう。

    docker pull fiware/orion-ld

こちらはTagにバージョンを指定していませんので、最新版のimageがダウンロードされます。imageの名称がv2とは異なっています。
harry@MSI:~$ docker pull fiware/orion-ld
Using default tag: latest
latest: Pulling from fiware/orion-ld
eac1b95df832: Pull complete
47aa3ed2034c: Pull complete
4f4fb700ef54: Pull complete
6e81da07db9b: Pull complete
b4228326190e: Pull complete
c42a4636db2a: Pull complete
7297f43c1982: Pull complete
989996a33971: Pull complete
7651fc13e5c8: Pull complete
8d24dc2c53a9: Pull complete
7dc29eb191ad: Pull complete
852b14f5bb66: Pull complete
da047af45e97: Pull complete
Digest: sha256:cae6690a66550e2d719eb50a8dde11fcfba5d07ed3ee78b09f41d9b4bf2ab7df
Status: Downloaded newer image for fiware/orion-ld:latest
docker.io/fiware/orion-ld:latest
harry@MSI:~$

今の状態は、Mongo-DBとOrionのimageがバラバラにダウンロードされただけで、繋がっていませんし、どちらのソフトウェアも動いていません。まずは、Mongo-DBとOrionを繋げるにはネットワークを作ります。ネットワークには名前を付けることができるので、今回はfiware_defaultという名前で作ります。ネットワークの作成には以下のコマンドラインをBashで動かします。

    docker network create fiware_default
harry@MSI:~$ docker network create fiware_default
f3d51b337f2d102ca15502aabb55f3dab0439cf263086c1ee44b680118db2c56
harry@MSI:~$
オプションを指定していませんので、bridge networkと呼ばれるタイプのネットワークを作る指定になっています。Bridge Networkとは、作成したネットワークが外部のネットワーク(ここではUbuntuを経由してWSLのネットワーク)と直接つながっている様に振る舞うもので、コンテナから外部への通信も外部からコンテナへの通信も可能です。
 この状態では、環境はできたものの、またOrionもMongo-DBも動いていません。まずは、Mongo-DBを動かしましょう。

docker run -d --name=mongo-db --network=fiware_default --expose=27017 mongo:4.4 --bind_ip_all
harry@MSI:~$ docker run -d --name=mongo-db --network=fiware_default --expose=27017 mongo:4.4 --bind_ip_all
c391f9ed082b86afc7cf2859bc363b27eb7688ee691d7af3bf02af04dbff34ff
harry@MSI:~$

このコマンドでは、mongo:4.4.のimageを使って、mongo-dbという名前のコンテナを、バックグランドで実行(-d)します。その際に利用するネットワークは"fiare_default"で、ポート番号は27017(--expose=27017)です。尚、exposeは、dockerに対する宣言で、後でdockerが処理するために予め、使うポートを明らかにしておくものです。また、Mongo-DBは、すべてのIPアドレスを受け入れる指定(--bind_ip_all)となっています。セキュリティー上望ましくはあませんが、今回は試用なのでこうしました。因みに、image名(mongo:4.4)の前はrunに対するオプションであり、image名の後ろは生成するコンテナに対するコマンドや引数となっています。次にOrionを起動しましょう。
以下の様に打ちます。

docker run -d --name fiware-orion --network=fiware_default -p 1026:1026  fiware/orion-ld -dbhost mongo-db
harry@MSI:~$ docker run -d --name fiware-orion --network=fiware_default -p 1026:1026  fiware/orion-ld -dbhost mongo-db
8d1d0f85d8b914f93855580071849da66701773dd20ad355747183c39f91c188
harry@MSI:~$

Mongo-dbと同様に、"fiware/orion-ld"というimageを、バックグランドで、"fiware-orion"という名前で起動し、使うネットワークはfiware_default。その際にfiware/orionのポート1026は外部からも1026で通信可能とする指定です。fiware/orion-ldに必要なDBは"mongo-db"というコンテナを使うように指定しています。実は、今回の例ではfiware/orion-ldは1026というポートで待っているように作られています。このため、1026のボードを外に開けておくと、外の人 (cUrlなどのプログラム)が1026で話しかけると、その声はfiware/orion-ldに届くという仕掛けです。
これで、1026のポートを使ってOrionと通信ができるようになった(筈)。
動いているかどうか確認しよう。まずは、以下のコマンドを打ちましょう。

    docker ps

そうすると、以下の様な応答があれは動いています。
harry@MSI:~$ docker ps
CONTAINER ID   IMAGE             COMMAND                  CREATED        STATUS        PORTS                    NAMES
8d1d0f85d8b9   fiware/orion-ld   "orionld -fg -multis…"   20 hours ago   Up 20 hours   0.0.0.0:1026->1026/tcp   fiware-orion
64faca6c18fa   mongo:4.4         "docker-entrypoint.s…"   2 days ago     Up 2 days     27017/tcp                mongo-db
harry@MSI:~$
 実は、本来fiwareは、fiware/orion-ldだけでなく、数多くのプログラムから構成されています。プログラムと呼ぶと色々なものが想起されるので、混乱を招かないようにfiwareではGE (General Enabler) と呼びます。fiware/orionは数あるGEの中で唯一の必須GEです。これ以外のGEはすべてオプションで、利用者は使っても使わなくても構いません。逆に言うと、ここまでで構築したfiwareは最も単純な基本的なfiwareということになります。暫くは、この状態でfiwareについて勉強します。