1.3. コンテナを更新する

計測に使用するコンテナを更新する(別のイメージをプルし、設定を変更して使用する)方法を説明します。

習得する内容
  • コンテナ更新の仕組み

  • デバイスコネクターサービスの変更方法

コンテナ更新の仕組み

Terminal System 2では、デバイスコネクターのコンテナを以下の手順で更新することができます。

  1. デバイスコネクターサービスで指定するイメージタグを更新します。

  2. コミット操作を行い、オーバーライドファイル(docker-compose.override.yml)を更新します。

  3. 計測開始時にmeasurementプロジェクトで利用するコンテナをpullします。

../../_images/about_update_compose.png

図 2 デバイスコネクターのコンテナを更新する

以降の手順で、コンテナを更新して計測する方法を説明します。

デバイスコネクターサービスの変更

前章で作成した Hello デバイスコネクターサービスを変更します。

  1. 開発用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 に変更します

  2. scpまたはMenderのファイル転送などで、作成したファイルをエッジコンピューターの以下のパスにコピーして上書きします。

    /var/lib/core/docker-compose/measurement/services/Hello.yml
    

設定の変更

デバイスコネクターサービスを変更しただけでは、オーバーライドファイルは更新されません。 オーバーライドファイルを更新するには、Core APIによるコミット操作が必要です。

  1. Mender Web UIのリモートターミナルまたはSSHログインでエッジコンピューターのコンソールを開き、以下のコマンドでオーバーライドファイルを生成してください。

    $ curl -X POST http://localhost:8081/api/v3/device_connectors/-/commit
    

    この操作により、更新したデバイスコネクターサービスの内容で、オーバーライドファイルが生成されます。

    警告

    計測中にコミット操作を行うことは出来ません。計測を停止してからコミット操作をしてください。

    生成したオーバーライドファイルは以下のコマンドで確認が可能です(root権限が必要です)。

    # cat /var/lib/core/docker-compose/measurement/docker-compose.override.yml
    
  2. 計測を開始し、新しく追加したデバイスコネクターサービスで計測ができることを確認します。

    ../../_images/edge_finder_world.png

    コンテナを更新して計測することができました。

  3. 動作確認後、計測を停止します。

次章では、Menderアーティファクトを利用したエッジコンピューターの更新方法を説明します。