dockerVDockerで実行するこのガイドはDockerおよびDockerコマンドラインに対していくらか基本的な知識を持っていることを前提としています。ここにはDockerでNode-REDを実行する多くの方法が記述されており、複数のアーキテクチャ(amd64、arm32v6、arm32v7、arm64v8およびs390x)をサポートしています。nodered/node-redにリネームされています。0.20.x以前のバージョンはhttps://hub.docker.com/r/nodered/node-red-dockerから入手可能です。onコマンドを実行するとNode-REDのインスタンスを実行するターミナルウィンドウが開かれます。[...]ブラウザでhttp://{host-ip}:1880を開くと、馴染みのNode-REDのデスクトップを確認できます。ホストポートを修正することで慣れ親しんでいる画面にたどり着くことができます。これは同時に1つのインスタンスしか実行できないことを意味します...しかし、一度に1ステップずつ実行できます。コンテナはバックグラウンドで実行させ続けます。Linuxイメージに基づいています。Linuxを使用するとビルドされるイメージのサイズを小さくすることができますが、ネイティブモジュールのコンパイルに必要な一般的な依存関係は除去されています。これらの依存関係を加えたい場合、実行しているコンテナで除外したパッケージでNode-REDイメージを拡張するか、docker-customを参考に新たなイメージをビルドします。READMEを参照してください。3Bで実行するとしましょう。以下のコマンドでイメージ(1.0.2-10-arm32v7とタグ付けされた)をプルし、コンテナを起動します。nodered/node-red:latest同じコマンドはamd64システムで実行している場合でも利用することができますが、これはDockerがamd64ホストで実行されていることを検出し、一致するタグ(1.0.2-10-amd64)のイメージをプルするからです。runコマンドとDockerコンポーズファイルをより柔軟に、システム間の互換を可能にします。Zeroまたは1について失敗するというバグがあります。現状、以下のようにこれらのデバイスではフルイメージタグを指定する必要があります。コンテナが壊れた場合に追加したノードやフローが消失しないことを保証する必要があります。コンテナ外部のボリュームに対してデータディレクトリをマウンティングすることで、このユーザデータを永続化することができます。バインドしたマウントまたは命名したデータボリュームを使うことでおこなうこともできます。Node-REDはコンテナ内の/dataディレクトリを使うことでユーザ設定データを保存できます。永続化のためにホストディレクトリを利用する(マウントをバインドする)コンテナ内部のNode-REDのユーザディレクトリを、コンテナ外部のホストディレクトリに保存することで、以下のコマンドを使うことができます。コンテナ内のnode-redユーザ(デフォルトではuid=1000)はホストディレクトリのオーナーとして同じuidを持っているはずです。nodered/node-redこの例ではホストの/home/pi/.node-redディレクトリをコンテナの/dataディレクトリにバインドします。バージョン0.20から1.0に移行したユーザは存在している/dataディレクトリが正しいオーナー権限を持っていることを確認する必要がある。1.0では、1000:1000となる必要があります。path/to/your/node-red/dataによって強制的に変更することができます。wikiを参照してください。コンテナ外部で永続化または共有するデータを保存することができます。このボリュームを使って新たなコンテナを実行します。nodered/node-redマウントしたボリュームからデータのバックアップを取る必要がある場合、コンテナを実行中にアクセスします。コンテナを壊してユーザデータを喪失することなく新しいインスタンスを起動します。ベースのコンテナイメージを更新することはシンプルです。stackまたはdocker-composeによって実行できます。composeに関する更なる情報は公式Dockerページを参照してください。Node-RED実行環境を設定するコンテナに引き渡すことが可能です。デフォルトでは‘flows.json’となっている環境変数(FLOWS)を使うことで設定します。以下のコマンドラインフラグによって実行時に変更することができます。settings.jsファイル内のflowFileプロパティを経由してフローファイルに設定されます。trueに設定することでプロジェクト機能を有効にしてNode-REDを起動しますNode.jsの実行時引数は環境変数(NODE_OPTIONS)を使うことでコンテナに引き渡すことができます。以下のコマンドを使用します。nodered/node-redコンテナシェルヘッドレスで実行した場合、コンテナにアクセスし直すためには以下のコマンドを利用します。mynoderedそして、ブラウザページを更新することでパレットに新しく追加したノードが現れるはずです。nodered/node-redマシンのローカルインスタンスを作成できます。特定の命名はしていません。ip}:32768でブラウジングします。コンテナのリンク–linkオプションを使用することでDocker実行環境の「内部に」コンテナをリンクすることができます。次のように利用できるシンプルなMQTTブローカーコンテナがあります。eclipse-mosquitto(望まない限り、ポート1883をグローバルに公開する必要はありません。--linkでエントリを追加することです。ポート1880で公開しており、node-redの編集のために外部のブラウザを使うことができます。1883:1883などをブローカーに追加してコマンドを実行することができます。ネイティブGPIOの代替はnode-red-node-pi-gpiodです。stackコマンドではサポートされていませんnode-red-node-pi-gpiodはこれらの全ての欠点を解消します。Piの異なるgpioにアクセスすることが可能にします。gpioノードを設定します。ポート番号8888がありますが、常ではありません。$3}'を利用できます。projectが存在します。グループへの追加ホストシリアルポートへアクセスするためには、dialoutグループにコンテナを追加する必要があります。dialoutを追加することで有効できます。nodered/node-redよくある問題とヒントここではユーザが報告した一般的な問題と解決策の一覧を示します。wikiを参照してください。権限拒否エラーを確認した場合、ファイルを開くかホストデバイスにアクセスし、ルートユーザとしてコンテナを起動してみてください。nodered/node-redリファレンス:https://github.com/node-red/node-red/issues/15https://github.com/node-red/node-red/issues/8ホストデバイスにアクセスするコンテナ内のホストからデバイスにアクセスしたい、例えばシリアルポートの場合、以下のコマンドラインフラグを使ってアクセスします。https://github.com/node-red/node-red/issues/15タイムゾーンを設定するデフォルトのタイムゾーンを変更したい場合、相対タイムゾーンを用いたTZ環境変数を使用します。行動規範コミュニティブログTwitterフォーラムSlackSlack(日本ユーザ会)Facebookグループ(日本ユーザ会)。