1.3. コンテナを更新する
計測に使用するコンテナを更新する(別のイメージをプルし、設定を変更して使用する)方法を説明します。
- 習得する内容
コンテナ更新の仕組み
デバイスコネクターサービスの変更方法
コンテナ更新の仕組み
Terminal System 2では、デバイスコネクターのコンテナを以下の手順で更新することができます。
デバイスコネクターサービスで指定するイメージタグを更新します。
コミット操作を行い、オーバーライドファイル(docker-compose.override.yml)を更新します。
計測開始時にmeasurementプロジェクトで利用するコンテナをpullします。
以降の手順で、コンテナを更新して計測する方法を説明します。
デバイスコネクターサービスの変更
前章で作成した Hello
デバイスコネクターサービスを変更します。
開発用PCで、以下のコードブロックをコピーして
Hello.yml
ファイルを以下の内容に変更してください。image: python:buster entrypoint: python3 command: > -c "while True: import struct, sys, time; f = open('${DC_UPSTREAM_FIFO_0}', 'wb'); now = int(time.clock_gettime(time.CLOCK_MONOTONIC_RAW) * 1_000_000_000); sec = int(now / 1_000_000_000); nsec = int(now - sec * 1_000_000_000); f.write(struct.pack('<LLHHL6s2s5s', sec, nsec, 6, 2, 5, b'string', b'ab', b'World')); time.sleep(1); f.close(); " depends_on: intdash-edge-agent2: condition: service_healthy volumes: - /var/run/core/intdash:/var/run/intdash restart: unless-stopped substitution_variables: - key: DC_UPSTREAM_FIFO_0 default: "" validation: "^/var/run/intdash/" display_strings_i18n: - locale: jpn name: FIFO Path description: intdash Edge Agent 2へデータを送信するためのFIFOのパス
イメージを
python:buster
に変更しますメッセージを
World
に変更します
scpまたはMenderのファイル転送などで、作成したファイルをエッジコンピューターの以下のパスにコピーして上書きします。
/var/lib/core/docker-compose/measurement/services/Hello.yml
設定の変更
デバイスコネクターサービスを変更しただけでは、オーバーライドファイルは更新されません。 オーバーライドファイルを更新するには、Terminal System APIによるコミット操作が必要です。
Mender Web UIのリモートターミナルまたはSSHログインでエッジコンピューターのコンソールを開き、以下のコマンドでオーバーライドファイルを生成してください。
$ curl -X POST http://localhost:8081/api/device_connectors/-/commit
この操作により、更新したデバイスコネクターサービスの内容で、オーバーライドファイルが生成されます。
警告
計測中にコミット操作を行うことは出来ません。計測を停止してからコミット操作をしてください。
生成したオーバーライドファイルは以下のコマンドで確認が可能です(root権限が必要です)。
# cat /var/lib/core/docker-compose/measurement/docker-compose.override.yml
Mender Web UIのリモートターミナルまたはSSHログインでエッジコンピューターのコンソールを開き、以下のコマンドで使用するコンテナのイメージを取得してください。
$ curl -X POST http://localhost:8081/api/docker/composes/measurement/pull
この操作により、更新したデバイスコネクターサービスで使用するコンテナイメージがエッジコンピューター内にダウンロードされます。
計測を開始し、新しく追加したデバイスコネクターサービスで計測ができることを確認します。
コンテナを更新して計測することができました。
動作確認後、計測を停止します。
次章では、Menderアーティファクトを利用したエッジコンピューターの更新方法を説明します。