Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

マイクロサービスの Docker イメージの作成

サポートされるプラットフォーム: Linux®、Windows®macOS

この例では、マイクロサービスの Docker® イメージを作成する方法を説明します。MATLAB® Compiler SDK™ で作成されたマイクロサービスのイメージは、MATLAB コードにアクセスするための HTTP/HTTPS エンドポイントを提供します。

MATLAB 関数をデプロイ可能なコード アーカイブにパッケージ化し、アーカイブと最小限の MATLAB Runtime パッケージを含む Docker イメージを作成します。次に、Docker でイメージを実行し、MATLAB Production Server™ クライアント API を含む HTTP ライブラリがある任意のプログラミング言語を使用して、サービスへの呼び出しを行います。

このオプションは、MATLAB アルゴリズムまたは Simulink® シミュレーションを大規模なアプリケーション内にサービスとして取り込むか、または同期的なリクエスト/レスポンス バックエンド API サービスを提供したいと考えている開発者に最適です。スタンドアロン アプリケーションが含まれた Docker イメージを作成する場合は、MATLAB スタンドアロン アプリケーションの Docker イメージへのパッケージ化を参照してください。

前提条件

  • 開発マシンに MATLAB Compiler SDK がインストールされていることを確認します。

  • MATLAB コマンド ウィンドウで「[~,msg] = system('docker version')」と入力して、開発マシンで Docker がインストールおよび構成されていることを確認します。

    メモ

    WSL を使用する場合は、代わりに [~,msg] = system('wsl docker version') を使用します。

    Docker がインストールされていない場合は、Docker の Web サイトの指示に従って、Docker のインストールと設定を行います。

    docs.docker.com/engine/install/

    Windows でマイクロサービスのイメージをビルドするには、Docker Desktop または Docker on Windows Subsystem for Linux v2 (WSL2) をインストールする必要があります。

  • 使用しているコンピューターがインターネットに接続していない場合、インターネットに接続しているコンピューターから Linux 用の MATLAB Runtime インストーラーをダウンロードし、そのインストーラーをオフラインのコンピューターに移す必要があります。次に、コマンド compiler.runtime.createInstallerDockerImage(filepath) を実行します。ここで、filepath は移した MATLAB Runtime インストーラー アーカイブのパスです。

    インストーラーは MathWorks® の Web サイトからダウンロードできます。

    https://www.mathworks.com/products/compiler/matlab-runtime.html

MATLAB 関数の作成

MATLAB で、パッケージ化する MATLAB プログラムを調べます。

この例では、以下のコードを使用して、mymagic.m という名前の関数を作成します。

function y = mymagic(x)
y = magic(x);

MATLAB コマンド プロンプトで、mymagic(5) と入力します。

出力は 5 行 5 列の魔方陣行列になります。

ans =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

デプロイ可能なアーカイブの作成

関数 compiler.build.productionServerArchive を使用して、関数 mymagic をコード アーカイブにパッケージ化します。

compiler.build コマンドで名前と値の引数を使用して、追加オプションを指定します。詳細については、compiler.build.productionServerArchive を参照してください。

オプションで、クライアントが MATLAB 関数を使用するときに役立つ関数シグネチャ ファイルを追加できます。詳細については、JSON での MATLAB 関数シグネチャを参照してください。

mpsResults = compiler.build.productionServerArchive('mymagic.m',...
'FunctionSignatures','mymagicFunctionSignatures.json',...
'ArchiveName','magicarchive','Verbose','on')
mpsResults = 

  Results with properties:

                  BuildType: 'productionServerArchive'
                      Files: {'/home/mluser/Work/magicarchiveproductionServerArchive/magicarchive.ctf'}
    IncludedSupportPackages: {}
                    Options: [1×1 compiler.build.ProductionServerArchiveOptions]

compiler.build.Results オブジェクト mpsResults には、ビルド タイプ、生成ファイル、含まれるサポート パッケージ、およびビルド オプションに関する情報が含まれています。

ビルドが完了すると、この関数は、デプロイ可能なアーカイブが含まれる現在のディレクトリに magicarchiveproductionServerArchive という名前のフォルダーを作成します。

Docker イメージへのデプロイ可能なアーカイブのパッケージ化

作成した mpsResults オブジェクトを使用してマイクロサービスの Docker イメージをビルドします。

compiler.build コマンドで名前と値の引数を使用して、追加オプションを指定します。詳細については、compiler.package.microserviceDockerImage を参照してください。

compiler.package.microserviceDockerImage(mpsResults,'ImageName','micro-magic')

この関数により、micro-magicmicroserviceDockerImage という名前のフォルダー内に以下のファイルが生成されます。

  • applicationFilesForMATLABCompiler/magicarchive.ctf — デプロイ可能なコード アーカイブ ファイル。

  • Dockerfile — 実行時オプションを指定する Docker ファイル。

  • GettingStarted.txt — デプロイ情報が含まれるテキスト ファイル。

Docker イメージのテスト

メモ

Docker が WSL2 セッションで実行されている場合は、以下のコマンドの前に wsl を付けてください。

  1. Linux ターミナルで、micro-magic イメージが Docker イメージのリストに含まれていることを確認します。

    docker images
    REPOSITORY                                      TAG           IMAGE ID            CREATED             SIZE
    micro-magic                                     latest        4401fa2bc057        23 seconds ago      1.42GB
    matlabruntime/r2023a/update0/4200000000000000   latest        5259656e4a32        24 hours ago        1.42GB
  2. Docker で micro-magic マイクロサービス イメージを実行します。

    docker run --rm -p 9900:9910 micro-magic

    ポート 9910 は、Docker コンテナー内でマイクロサービスによって公開される既定のポートです。ホスト マシン上の任意の使用可能なポートにマッピングできます。この例では、ポート 9900 にマッピングしています。

    Docker コマンドで追加オプションを指定できます。オプションの完全なリストについては、マイクロサービスのコマンド引数を参照してください。

  3. コンテナーが Docker で実行されたら、Web ブラウザーで次の URL を開いてサービスのステータスを確認できます。

    http://hostname:9900/api/health

    メモ

    Docker がブラウザーと同じマシンで実行されている場合は、ホスト名として localhost を使用します。

    サービスでリクエストを受け取る準備ができている場合は、次のメッセージが表示されます。

    "status:  ok"
  4. 実行されているサービスをテストします。ターミナルで、curl コマンドを使用し、入力引数 4 を指定してポート 9900 を介して JSON クエリをサービスに送信します。JSON リクエストの作成の詳細については、MATLAB データ型の JSON 表現 (MATLAB Production Server)を参照してください。

    curl -v -H Content-Type:application/json -d '{"nargout":1,"rhs":[4]}' \ "http://hostname:9900/magicarchive/mymagic"

    出力は以下のようになります。

    {"lhs":[{"mwdata":[16,5,9,4,2,11,7,14,3,10,6,15,13,8,12,1],\
    "mwsize":[4,4],"mwtype":"double"}]}

    メモ

    Windows で curl を使用するには、以下の構文を使用します。

    curl -v -H Content-Type:application/json -d "{\"nargout\":1,\"rhs\":[4]}" \ "http://hostname:9900/magicarchive/mymagic"

  5. サービスを停止するには、以下のコマンドを使用してコンテナー ID を表示します。

    docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES df7710d69bf0 micro-magic "/opt/matlabruntime/…" 6 minutes ago Up 6 minutes 0.0.0.0:9900->9910/tcp epic_herschel 

    示されたコンテナー ID を使用してサービスを停止します。

    docker stop df7710d69bf0

Docker イメージの共有

Docker イメージはさまざまな方法で共有できます。

  • イメージを Docker の中央レジストリ DockerHub にプッシュするか、プライベート レジストリにプッシュします。これが最も一般的なワークフローです。

  • イメージを tar アーカイブとして保存するか、他のユーザーと共有します。このワークフローは、ただちにテストを行う場合に適しています。

イメージを DockerHub またはプライベート レジストリにプッシュする方法の詳細については、Docker のドキュメンテーションを参照してください。

Docker イメージを tar アーカイブとして保存

Docker イメージを tar アーカイブとして保存するには、システム コマンド ウィンドウを開き、Docker コンテキストのフォルダーに移動して次を入力します。

docker save micro-magic -o micro-magic.tar

このコマンドにより、現在のフォルダー内に micro-magic.tar という名前のファイルが作成されます。tarball を他のユーザーと共有する前に、(chmod を使用するなどして) 適切な権限を設定します。

tar アーカイブからの Docker イメージの読み込み

エンド ユーザーのマシン上で tarball に含まれるイメージを読み込みます。

docker load --input micro-magic.tar

イメージが読み込まれたことを確認します。

docker images

Docker イメージの実行

docker run --rm -p 9900:9910 micro-magic

参考

|

関連するトピック