Fiwareを使って都市OSを動かしてみよう

Munu


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


Column
Link
用語集

Coppell

Technologies

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



2.5.Mongo-DBとFiware/Orionの起動
2022年4月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

こちらはTagにバージョンを指定していませんので、最新版のimageがダウンロードされます。
harry@MSI:~$ docker pull fiware/orion
Using default tag: latest
latest: Pulling from fiware/orion
a1d0c7532777: Pull complete
62d7c5d7f07f: Pull complete
42fad792a003: Pull complete
Digest: sha256:fa4434d18eed0269d22cee41ef2ed793501b9fd8daa27460286c4e6db2add9ca
Status: Downloaded newer image for fiware/orion:latest
docker.io/fiware/orion: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 -dbhost mongo-db
harry@MSI:~$ docker run -d --name fiware-orion --network=fiware_default -p 1026:1026 fiware/orion -dbhost mongo-db
7bf51ff4b7419ea867140e7bad41c50246a145b8d7bd0ac2a70f5d04e438a034
harry@MSI:~$

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

    docker ps

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