Pythonによるデータ分析・機械学習ブログ

Pythonによるデータの前処理・グラフ化、機械学習、統計解析、画像処理、Webスクレイピング、自然言語処理の基礎について紹介していきます。

MENU

MQTTブローカーを動作させるDokcer環境の構築

はじめに

仮想化技術

 近年、IT業界では「仮想化」という言葉が頻繁に聞かれるようになり、ネットワークやサーバーの仮想化が進んでいます。仮想化技術の誕生によって、1台のサーバー上に複数のサーバー環境を構築することが可能になりました。サーバー環境を分けて構築することで、異なるOS上で構築したり、パッケージのバージョンに合わせてソフトの環境構築が可能となります。

Dockerとは

 このようなサーバーの仮想環境の構築で注目を浴びているのが、コンテナ型仮想化環境技術であるDockerです。Dockerを用いることでホストOS上にコンテナと呼ばれる仮想環境を用意することができ、そのコンテナ内でアプリケーション等を動作させることができます。Dockerの主なメリットは3つあります。

  1. 高速に動作する点です。Dockerコンテナはカーネル部分をホストOSと共有するため、リソース使用量も非常に少なく、高速に動作します。
  2. 動作環境構築の工数削減ができる点です。Dockerhubと呼ばれるリポジトリUbuntuDebian等のコンテナイメージが用意されており、そちらを取得してコンテナを作成することができ、比較的速く環境を用意できます。さらにDockerfileを用いるとapt install等のコマンドを手動で実行することなく、動作環境を自動的に構築してくれます。Dockerfileはコンテナイメージを管理するためのファイルで、動作環境を構築時に実行するコマンドを記述しておくことで、ビルド時に動作環境構築を自動的に実施してくれます。このDokcerfileを用いることで単純化・標準化することができます。
  3. 異なるマシン上への移行が可能な点です。一度作成したコンテナイメージを別のマシンに移して、コンテナイメージからコンテナを作成することができます。この利点により複数人で共同で開発する場合、開発から運用に移行する際などに非常に便利となります。

MQTTとは

 また、近年はIoT技術の発展により、TCP/IPネットワークで利用できる通信プロトコルの一つであるMQTT(Message Queueing Telemetry Transport )が注目されています。MQTTは送信側が送るデータをデータ領域に一旦保持しながら、受信側の処理が完了するのを待たずに次の処理へ移る方式で、軽量であることからネットワーク帯域幅を最適化できます。MQTTの詳細は以下の記事が参考になります。

kfep.jp

本記事の内容

 本記事では、MQTTブローカーとMQTTサブスクライバーを動作させるDokcer環境の構築を紹介します。IoT技術が今後より実装がなされていく中でMQTT通信が多用されると思います。その際に、本記事の内容が環境構築を標準化や環境構築の工数削減につながれば幸いです。

 

 

 

1. 本記事で扱うシステム構成

本記事では以下のようなシステム構成で動作するDockerコンテナの生成を試みます。マシン2にコンテナを生成して、その中にMQTTブローカーとサブスクライバーが動作する環境を構築します。

 

2. MQTTブローカー

MQTTブローカーはオープンソースで実装します。本記事では以下のMosquittoを使用します。

mosquitto.org

3. PythonでのMQTT PublisherとSubscriber

本記事では以下のリンク先のPythonによるMQTT PublisherとSubscriberを使用します。

chantastu.hatenablog.com

 

4. コンテナのDockerfileとbuild

以下のDockerfileを使用してMQTTブローカーとサブスクライバーが動作するコンテナを生成します。

そして、上記のDockerfileを用いてビルドします。

 

5. コンテナの起動

それではコンテナを起動します。この時ポートフォワーディングとして「-p 1883:1883」を指定します。これでコンテナ内でMQTTの受信が可能となります。pythonでのMQTTサブスクライバーは/home/tatsu/mqtt-testにある状態でコンテナ内の/homeにマウントしています。コンテナ起動の時にホスト側でMQTTブローカーが起動しているとエラーが出ますので、「systemctl stop mosquitto」で停止させた後、コンテナを起動させてください。

コンテナ生成が終了したら、以下のコマンドでMQTTブローカーを起動させます。

 

次に、別のターミナルやタブを開き、Pythonのサブスクライバーの実行、マシン1でPythonパブリッシャーの実行によりMQTTの通信動作を確認することができます。これでMQTTブローカーを動作させるDokcer環境の構築完了です。

 

オススメ書籍

仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん

Docker実践ガイド第2版 コンテナ環境の構築・運用・活用

たった1日で基本が身に付く! Docker/Kubernetes超入門

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

 

おわりに

本記事では、MQTTブローカーとMQTTサブスクライバーを動作させるDokcer環境の構築を紹介しました。IoT技術が今後より実装がなされていく中でMQTT通信が多用されると思います。その際に、本記事の内容が環境構築を標準化や環境構築の工数削減につながれば幸いです。