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について勉強します。 | |
|