工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 産業技術

Node-RED と Docker の使用開始

Docker コンテナーを使用して、PLCnext デバイスで node-RED サーバーを実行できます。ここで説明する他の方法は少し高速ですが。 OCI コンテナーの使用には、いくつかの利点があります。たとえば、アプリケーションに同じパッケージを繰り返し使用する場合、標準イメージをビルドして Docker ハブからダウンロードするだけで便利です。必要に応じて、Docker を使用して node-red サーバーを開始および停止することもできます。

このブログでは、そのことだけを説明します。まず、Docker のインストール プロセスについて説明し、インストールを確認します。 Dockerfile がプリインストールされた好みのパッケージでカスタム イメージを構築し、新しく作成したイメージからコンテナーを作成します。最後に、コンテナーがコントローラーの起動時に開始され、イメージが Dockerhub にプッシュされるようにします。

バレナの取り付け – エンジン

Docker コンテナーを使用して PLCnext デバイスで node-RED ランタイムを実行できると言ったとき、私は少し嘘をつきました。ご覧のとおり、コンテナーを実行するエンジンとして Balena-engine を使用します。より具体的には、OCI (Open Container Initiative) コンテナーを使用します。命名法を突き詰めると、Makersblog への道が開けるかもしれませんが、このブログの最後にある「さらに読む」セクションに、興味のある人のためにいくつかのリンクを追加しました。

インストール手順はかなり簡単で、完全なリファレンスとしてここに記載されていますが、実用的な理由から、コマンドは次のセクションにも記載されています。
root ユーザーとしてログインしていることを確認してください。新しい root パスワードを作成するには、シェルで次のコマンドを入力し、管理者パスワードに続けて新しい root パスを 2 回入力します。

sudo passwd root

su の後に新しく作成したパスワードを入力して、root ユーザーとしてログインします。

git リポジトリのクローンを作成し、新しいフォルダーに移動します

git clone https://github.com/PLCnext/Docker_GettingStarted.git
cd Docker_GettingStarted

セットアップ スクリプトを実行可能にして、そのスクリプトを実行します。

chmod +x setup.sh
./setup.sh

コンテナからインターネット アクセスを取得する

インストール中に nft テーブルが正しく設定されないことがあります。幸いなことに、これは簡単に修正できます。
完全なリファレンス ガイドはここにありますが、進行状況の簡単な説明を以下に示します。

あなたのシェルタイプで

ifconfig

ネットワーク インターフェイスの構成がポップアップ表示されます。それらの 1 つに Balena という名前が付けられています。このインターフェイスの Inet アドレスに注意してください。
次のようになります:172.17.0.1 

シェルに次のコマンドを入力し、前の手順で受け取った Inet アドレスをスクリプトの 2 行目と比較します。
2 つのアドレスは同じである必要があります。同じである場合は、次のセクションに進んでください。
そうでない場合は、シェルで次のコマンドをキャストし、2 行目のアドレスを ifconfig が受け取ったものと一致するように変更します。

nano /etc/nftables/balena.nft

balena-engine-daemon を停止してから開始し、nft テーブルをリロードします。

/etc/init.d/balena stop
/etc/init.d/balena start

初めてのコンテナ

最初のコンテナをダウンロードするには、次のコマンドを使用します。フラグについては後で説明します。今は気にしないでください。次に、costum パッケージのない node-red コンテナをダウンロードします。 costum パッケージが必要ない場合は、ここで停止して、コントローラーのポート 1880 を参照してください。

<サンプル>balena-engine run -d -p 1880:1880 --name nodered --restart always nodered/node-red

Docker ハブ

前のセクションで使用した arm32v7/debian イメージは、Docker Hub からダウンロードしたものです。
Docker Hub は基本的に、コンテナー イメージが収集され、そこから簡単にダウンロードできる場所です。
組織 arm32v7 をお勧めします。この組織は、AXC F 2152 のアーキテクチャと互換性のあるイメージを作成します。

node-red 組織は、AXC F 2152 と互換性のあるイメージを作成しました。このイメージを次のセクションで使用しますが、最初に、コンテナーを頻繁に使用する場合は、Docker Hub でアカウントを作成し、そのリポジトリを使用します。無料アカウントを作成すると、ほぼ無制限のパブリック リポジトリと 1 つのプライベート リポジトリを取得できます。しばらく Docker Hub を使用するのをためらっていましたが、かなりの時間がかかりました。
このブログの最後のセクションでは、Docker Hub にログインしてイメージに再タグ付けし、イメージを Docker Hub にプッシュする方法を示して、Docker Hub の使用に関する学習曲線を少し平坦化します。

Dockerfile

Docker ファイルは、ある意味で Docker イメージのレシピです。このブログでは、Dockerfile を使用して独自の node-red イメージを作成し、必要なパッケージをインストールします。
Dockerfile の最初の行は、ほとんどの場合 FROM コマンドです。このコマンドを使用して、独自のイメージを構築するベース イメージを定義します。
FROM ステートメントの後、イメージの構築を開始します。 Dockerfile で使用できるコマンドは多数ありますが、ここでは RUN のみを使用します。
Dockerfile 参照リンクは、参考資料セクションに記載されています。

RUN ステートメントは、構築中のコンテナ内で続くコマンドを実行します。
たとえば、SNMP パッケージなどの新しいパッケージをインストールするには、次のように指定します:RUN npm install node-red-node-snmp

理論が終わったら、Dockerfile をビルドしましょう。願わくば、まだ SSH セッションにいることを願っています (2 セクション前の debian コンテインメントではなく、AXC F 2152 に戻っていることを確認してください!)。
nano で Dockerfile を作成し、内容をコピーして新しいファイルに貼り付けることができます。保存 (ctrl + s) して終了 (ctrl + x).nano Dockerfile

FROM nodered/node-red:latest-minimal
RUN npm install node-red-node-snmp

新しいイメージを構築する時が来ました!

balena-engine build . --tag myimage

画像が正常にタグ付けされたというメッセージを受け取ったら、最初の画像を作成しました!
ビルドしたばかりのイメージを表示するには、次のコマンドを使用します:balena-engine images

新しいイメージの実行

最後に、イメージを実行してコンテナーを作成する準備が整いました。
シェルで次のコマンドをキャストして、コンテナーを対話的に実行します。
インタラクティブとは、コンテナー内で何が起こっているかをターミナルで確認できることを意味します。
反対側は切り離されており、フラグ -d でマークされています

balena-engine run -it -p 1880:1880 --name nodered myimage

コンテナを終了して実行し続けるには、ctrl + p ctrl +q を使用します
コントローラの IP アドレスに続いてポート 1880 をブラウズすると、node red 環境が表示され、snmp パッケージがインストールされていることがわかります!

起動時にイメージを開始し、docker 実行フラグのプライマー

AXC F 2152 が再起動されるたびにコンテナを手動で起動するのは現実的ではありません。幸いなことに、Docker にそれを開始するように指示することができます。それは簡単です!
以下にリストされているコマンドを使用するだけです。これは、使用される docker フラグをよりよく理解するための時間でもあります。まず、フラグはコマンドの後に指定するもので、- または - で始まります。
これまで、コンテナーを対話的に実行する -it と、分離されたコンテナーを (バックグラウンドで) 実行する -d だけを見てきました。

フラグ -p は、コンテナーのポートをホストのポートにマップします。最初にホストのポート番号が表示され、次にコンテナのポート番号が表示されます。
–name フラグを使用してコンテナに名前を付けることができます。この名前は、balena-engine ps を使用してすべてのアクティブなコンテナーを一覧表示するか、balena-engine ps -a を使用してすべてのコンテナーを一覧表示するときに表示されます。
–name フラグを使用しない場合、balena-daemon はコンテナーにランダムな名前を割り当てます。

最後になりましたが、–restart フラグを使用してコンテナーに再起動ポリシーを割り当てることができます。
可能な設定は、参考資料に記載されている参照リンクにあります。
今のところ – 再起動するだけでうまくいきます!コマンドは次のようになります:

balena-engine run -it -p 1880:1880 --name nodered --restart always myimage

Docker ハブへのプッシュ

イメージを別のコントローラーで使用したくない場合。イメージを Docker Hub にアップロードすることをお勧めします。
すでにアカウントを持っていて、docker リポジトリを作成していることを前提として、続行します。まず、アカウントにログインする必要があります。これを行うには、balena-engine login の後にユーザー名とパスワードを入力します。プライベート リポジトリからイメージをダウンロードし、イメージを Docker ハブにプッシュできるようになりました。

イメージを Docker ハブにプッシュするには、適切な名前を付けることが重要です。リポジトリ myrep を作成し、ユーザー アカウントが myaccount の場合、イメージの名前は myaccount/myrep になります。
イメージをビルドするときにそのような名前を付けなかった場合は、balena-engine タグ oldimagetag newimagetag を使用してイメージにタグを付け直す必要があります。私たちの場合、これは次のようになります:

balena-engine tag myimage myaccount/myrep  

それ以上何も定義されていない場合は、最新のラベルを取得します。ラベルに :とラベル名を追加することができます。例:

balena-engine tag myimage myaccount/myrep:alabel 

あとは、次のコマンドを使用してイメージを Docker ハブにプッシュするだけです:

balena-engine push myaccount/myrep

その他の資料と参考文献


https://github.com/PLCnext/Docker_GettingStarted/blob/master/getting-started/Part-01/README.md

https://www.docker.com/resources/what-c​​ontainer

https://docs.docker.com/engine/reference/builder/

https://hub.docker.com/

https://hub.docker.com/r/nodered/node-red


産業技術

  1. セラミック3D印刷の開始
  2. 基本的な染料に精通する!
  3. 工業用染料および顔料に精通する!
  4. TJBot入門
  5. RAK 831 LoraGatewayおよびRPi3の使用を開始する
  6. RAK831LoRaゲートウェイとRPi3の使用を開始する
  7. 粘り強さと忍耐力でリードする
  8. 保険におけるAI入門:入門ガイド
  9. Arduinoチュートリアル01:はじめに
  10. My.Cat.com を開始する
  11. Docker のヒントとベスト プラクティスを含む Node-Red