3.1. コンテナ実行環境
Terminal System 2のコンテナ実行環境について説明します。
Docker Composeプロジェクトの管理
Terminal System 2は、コンテナの実行管理にDocker Composeを使用します。
Docker Composeでは、複数のDockerコンテナを定義し、それらをプロジェクトとしてまとめて管理することが可能です。 Terminal System 2では、systemプロジェクト、measurementプロジェクトおよびカスタマイズが可能なカスタムプロジェクトを利用することができます。
注釈
Terminal System 2が利用するプロジェクトおよびコンテナの概要については Docker Compose を参照してください。
プロジェクトの操作
Terminal System 2のDocker Composeプロジェクトは、Core Daemonにより操作されます。 プロジェクトのup/down/pullのタイミングは以下のとおりです。
- プロジェクトのup/down
プロジェクトのup/downタイミングは、Core APIの Create Docker Compose / Update Docker Compose の設定項目
boot_after
により設定が可能です。system
を指定した場合、プロジェクトはシステム起動時にupになり、システム終了時にdownになります。measurement
を指定した場合、プロジェクトは計測開始時にupになり、計測終了時にdownになります。また、Core APIの Start Docker Compose / Stop Docker Compose を呼び出すことでもup/down操作が可能です。
- プロジェクトのpull
プロジェクトのup前にpullします。
コンテナレジストリのイメージが更新された場合は、新しいイメージを取得してからコンテナを起動します。
プロジェクトの追加・削除
カスタマイズにより、新しいカスタムプロジェクトを追加・削除することが可能です。 詳細は アプリケーション開発 を参照してください。
systemプロジェクトおよびmeasurementプロジェクトを削除することはできません。
Dockerイメージ
Terminal System 2が利用するDockerイメージについて説明します。
プリインストールイメージ
Terminal System 2は、 Docker Compose に記載された、デフォルトで利用するDockerイメージをプリインストールしています。 プリインストールコンテナのイメージおよびタグ名は以下の環境変数ファイルに定義されており、Core DaemonがDocker Composeを操作する際に使用します。
/etc/core/docker-compose/.env
イメージの取得
Dockerイメージは、基本的にはプロジェクトをpullするタイミングで取得しますが、docker-archive-loadサービスを利用してロードすることも可能です。
- docker-archive-loadサービス
tar.gz形式のDockerイメージのアーカイブをロードするsystemdサービスです。 プリインストールイメージを使用する場合や、pullができない場合(プライベートリポジトリのイメージを使用する場合や、オフライン環境の場合)に利用します。 docker-archive-loadサービスは、システム起動時に
/usr/bin/docker-archive-load.sh
を実行します。システム起動中にこのスクリプトを直接実行することでもロード可能です。以下のコマンドで作成したアーカイブをサポートします。
$ docker save myimage:latest | gzip > myimage_latest.tar.gz
docker-archive-loadサービスは、エッジコンピューター起動時にディレクトリ
/var/lib/docker-archive-load
に格納されたアーカイブを自動的にロードしてからCore Daemonを起動します。/var/lib/docker-archive-load/myimage_latest.tar.gz
イメージの削除
タグが付いていない不要なDockerイメージは、docker-autopruneサービスにより自動的に削除されます。
- docker-autopruneサービス
システム起動時に、タグが付いていないイメージ(タグが
<none>
のイメージ)を自動削除するsystemdサービスです。 latestタグなどのタグを固定した運用でコンテナレジストリのイメージが更新された場合に、古いイメージを自動削除する場合に利用します。
警告
タグが付いているイメージはdocker-autopruneサービスで削除することはできません。必要に応じてイメージ更新時に古いイメージを削除する必要があります。