メインコンテンツ

カスタム ベース レイヤーを使用した Docker イメージの作成

R2026b

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

この例では、カスタマイズしたベース レイヤーを使用して Docker® イメージを作成する方法を示します。カスタム ベース レイヤーを作成すると、任意のバージョンの Linux またはその他のオペレーティング システムを基盤として使用し、コマンドを実行したり、追加の依存関係をインストールしたりできます。

Docker コンテナー イメージは、複数のレイヤーで構成されています。この例では 3 つのレイヤーを作成します。各レイヤーには、それまでのレイヤーの上に積み重ねられる一連のファイルシステム変更が含まれます。

  1. カスタム ベース レイヤー (選択した OS)

  2. セカンダリ レイヤー (MATLAB® Runtime)

  3. アプリケーション レイヤー (スタンドアロン アプリケーション)

前提条件

  • 開発マシンに 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) をインストールする必要があります。

  • 使用しているコンピューターはインターネットに接続されている必要があります。

メモ

一部のデプロイ可能なアーカイブ (Simulink® Compiler™ のアーティファクトなど) はクロスプラットフォーム互換ではなく、Docker で使用する Linux でビルドする必要があります。詳細については、Limitations for MATLAB Compiler and MATLAB Compiler SDKを参照してください。

compiler.build.standaloneApplication を使用したスタンドアロン アプリケーションの作成

MATLAB で、マイクロサービスとしてデプロイする MATLAB 関数を見つけます。この例では、次のコードを使用して関数 mirror.m を作成します。

function out = mirror(in)
out = in;

compiler.build.standaloneApplication を使用してスタンドアロン アプリケーションを作成します。

buildResults = compiler.build.standaloneApplication("mirror.m","Verbose",true);

Docker を使用したカスタム ベース レイヤーのビルド

Dockerfile を使用してベース レイヤーをカスタマイズできます。

この例では、Dockerfile.customdeps という名前の新しいファイルを作成します。このファイルでは、Linux ディストリビューションを指定し、MATLAB Runtime に必要なすべての依存関係をインストールする必要があります。

Dockerfile にコマンドを追加して、ベース レイヤーの動作をカスタマイズできます。たとえば、apt 構成ファイルにプロキシ情報を追加します。

RUN echo 'Acquire::http::Proxy "http://yourproxyaddress:proxyport";' >> /etc/apt/apt.conf

また、デプロイの要件を満たすために追加の依存関係をインストールすることもできます。

FROM ubuntu:24.04

RUN echo 'Acquire::http::Proxy "http://yourproxyaddress:proxyport";' >> /etc/apt/apt.conf

RUN apt-get update && apt-get install --no-install-recommends -y \
ca-certificates \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-tools \
libasound2t64 \
libatomic1 \
libc6 \
libcairo-gobject2 \
libcairo2 \
libcap2 \
libcups2t64 \
libdrm2 \
libfontconfig1 \
libfribidi0 \
libgbm1 \
libgdk-pixbuf-2.0-0 \
libgl1 \
libglib2.0-0t64 \
libgstreamer-plugins-base1.0-0 \
libgstreamer1.0-0 \
libgtk-3-0t64 \
libgtk2.0-0t64 \
libice6 \
libltdl7 \
libnettle8t64 \
libnspr4 \
libnss3 \
libpam0g \
libpango-1.0-0 \
libpangocairo-1.0-0 \
libpangoft2-1.0-0 \
libpixman-1-0 \
libsndfile1 \
libtirpc3t64 \
libuuid1 \
libwayland-client0 \
libxcomposite1 \
libxcursor1 \
libxdamage1 \
libxfixes3 \
libxfont2 \
libxft2 \
libxinerama1 \
libxrandr2 \
libxt6t64 \
libxtst6 \
libxxf86vm1 \
net-tools \
procps \
unzip \
zlib1g \
&& apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/*
RUN [ -d /usr/share/X11/xkb ] || mkdir -p /usr/share/X11/xkb

Ubuntu 24.04 用のパッケージはhttps://github.com/mathworks-ref-arch/container-images/tree/main/matlab-runtime-deps/から取得されます。内部 OS イメージが別の Linux ディストリビューションから派生している場合は、その OS 用の依存関係のリストを再作成する必要があります。

MATLAB コマンド ウィンドウで、Docker および作成した Dockerfile を使用してカスタム ベース レイヤー イメージをビルドします。

depsImageName = "mycompanybase:r2024b";
system("docker build -f Dockerfile.customdeps -t " + depsImageName + " .");

メモ

WSL を使用する場合は、代わりに「wsl docker build」と入力します。

MATLAB Runtime を使用したセカンダリ レイヤーの作成

作成したカスタム ベース レイヤーを使用する MATLAB Runtime Docker イメージ レイヤーを作成します。名前と値の引数を使用して、ベース レイヤー イメージと MATLAB Runtime イメージの名前を指定します。

runtimeImageName = "custom-matlabruntime:r2024b";
compiler.runtime.createDockerImage(buildResults, ...
    "BaseImage",depsImageName, ...
    "ImageName",runtimeImageName)

スタンドアロン アプリケーションのパッケージ化によるアプリケーション レイヤーの作成

スタンドアロン アプリケーション用の Docker イメージを作成します。作成した MATLAB Runtime Docker イメージの名前を compiler.package.docker 関数への入力として指定します。

compiler.package.docker(buildResults, ...
    "ImageName","mirror-micro","RuntimeImage",runtimeImageName);

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

参考

| (MATLAB Compiler SDK) |

トピック