将 MATLAB 独立应用程序打包为 Docker 镜像
支持的平台:仅限 Linux®。
此示例说明了如何将 MATLAB® 独立应用程序打包为 Docker® 镜像。
此选项最适合希望以包含所有依赖项的标准化格式分发应用程序或在编排器中运行批处理作业的开发人员。要创建提供 HTTP/HTTPS 端点的微服务 Docker 镜像,请参阅创建微服务 Docker 镜像 (MATLAB Compiler SDK)。
前提条件
通过在终端中键入
docker
来验证您是否已在 Linux 计算机上安装了 Docker。如果您尚未安装 Docker,可以按照 Docker 网站上的说明安装并设置 Docker。通过在系统终端中键入以下命令来测试您的 Docker 安装:
如果您的 Docker 安装正常工作,则您会看到以下消息:docker run hello-world
Hello from Docker! This message shows that your installation appears to be working correctly.
验证 MATLAB Runtime 安装程序在您的计算机上是否可用。您可以通过在 MATLAB 命令提示符下执行
compiler.runtime.download
函数来验证它是否存在。如果计算机上存在安装程序,则该函数会返回它的位置。否则,它会下载与执行此命令的 MATLAB 版本和更新级别相匹配的 MATLAB Runtime 安装程序。如果您使用的计算机未连接到 Internet,则您必须从连接到 Internet 的计算机下载 MATLAB Runtime 安装程序。在下载 MATLAB Runtime 安装程序后,您需要将该安装程序传输到离线计算机。您可以从 MathWorks 网站下载该安装程序。
https://www.mathworks.com/products/compiler/matlab-runtime.html
在 MATLAB 中创建函数
编写一个名为 mymagic
的 MATLAB 函数并将其保存为 mymagic.m
。
function mymagic(x)
y = magic(x);
disp(y)
在 MATLAB 命令提示符下测试该函数。
mymagic(5)
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.standaloneApplication
函数将 mymagic
函数打包为独立应用程序。
res = compiler.build.standaloneApplication('mymagic.m','TreatInputsAsNumeric',true)
res = Results with properties: BuildType: 'standaloneApplication' Files: {3×1 cell} Options: [1×1 compiler.build.StandaloneApplicationOptions] RuntimeDependencies: [1×1 compiler.runtime.Dependencies]
MATLAB 命令提示符下返回的 Results
对象 res
包含有关编译的信息。
编译完成后,该函数会在您的当前目录中创建一个名为 mymagicstandaloneApplication
的文件夹来存储独立应用程序。
将独立应用程序打包为 Docker 镜像
创建 DockerOptions
对象
在创建 Docker 镜像之前,请使用 compiler.package.DockerOptions
函数创建一个 DockerOptions
对象,并传递 Results
对象 res
和镜像名称 mymagic-standalone-app
作为输入参量。compiler.package.DockerOptions
函数允许您自定义 Docker 镜像打包。
opts = compiler.package.DockerOptions(res,'ImageName','mymagic-standalone-app')
opts = DockerOptions with properties: EntryPoint: 'mymagic' AdditionalInstructions: {} AdditionalPackages: {} ExecuteDockerBuild: on ImageName: 'mymagic-standalone-app' DockerContext: './mymagic-standalone-appdocker'
创建 Docker 镜像
使用 compiler.package.docker
函数创建一个 Docker 镜像,并传递 Results
对象 res
和 DockerOptions
对象 opts
作为输入参量。
compiler.package.docker(res,'Options',opts)
Generating Runtime Image Cleaning MATLAB Runtime installer location. It may take several minutes... Copying MATLAB Runtime installer. It may take several minutes... ... ... ... Successfully built 6501fa2bc057 Successfully tagged mymagic-standalone-app:latest DOCKER CONTEXT LOCATION: /home/user/MATLAB/work/mymagic-standalone-appdocker SAMPLE DOCKER RUN COMMAND: docker run --rm -e "DISPLAY=:0" -v /tmp/.X11-unix:/tmp/.X11-unix mymagic-standalone-app
编译完成后,该函数会在您的当前目录中创建一个名为 mymagic-standalone-appdocker
的文件夹。此文件夹是 Docker 上下文并且包含 Dockerfile。compiler.package.docker
函数还返回 Docker 上下文的位置和一个示例 Docker 运行命令。您可以使用示例 Docker 运行命令来测试您的镜像是否正确执行。如果应用程序要求使用输入参量,请将它们追加到示例命令。
在打包过程中,MATLAB Runtime 必需的位被打包为父级 Docker 镜像,独立应用程序被打包为子级 Docker 镜像。
测试 Docker 镜像
打开一个 Linux 终端并导航到 Docker 上下文文件夹。验证 mymagic-standalone-app
Docker 镜像是否在 Docker 镜像列表中列出。
$ docker images |
REPOSITORY TAG IMAGE ID CREATED SIZE
mymagic-standalone-app latest 6501fa2bc057 23 seconds ago 1.03GB
matlabruntime/r2025a/update0/4000000000000000 latest c6eb5ba4ae69 24 hours ago 1.03GB
验证 mymagic-standalone-app
Docker 镜像在 Docker 镜像列表中列出后,使用输入参量 5
执行示例运行命令:
$ docker run --rm -e "DISPLAY=:0" -v /tmp/.X11-unix:/tmp/.X11-unix mymagic-standalone-app 5 |
No protocol specified out = 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
独立应用程序已打包,现在可以作为 Docker 镜像运行。
注意
运行生成绘图或图形的应用程序时,请在运行 Docker 镜像之前使用 +
选项执行 xhost
程序。
xhost +
xhost
程序控制对 X 显示服务器的访问,从而使得绘图和图形能够显示。+
选项指示所有人都能够访问 X 显示服务器。在运行不生成绘图或图形的应用程序之前,如果您先使用 +
选项运行 xhost
程序,则 No protocol specified
消息将不再显示。共享 Docker 镜像
您可以通过多种方式共享 Docker 镜像。
将您的镜像推送到 Docker 的中央注册表 DockerHub,或者推送到您的私有注册表。这是最常见的工作流。
将您的镜像保存为 tar 存档,然后与他人共享。该工作流适合于立即测试。
有关将您的镜像推送到 Docker 的中央注册表或推送到您的私有注册表的详细信息,请查阅 Docker 文档。
将 Docker 镜像保存为 tar 存档
要将您的 Docker 镜像保存为 tar 存档,请打开一个 Linux 终端,导航到 Docker 上下文文件夹,然后键入以下命令。
$ docker save mymagic-standalone-app -o mymagic-standalone-app.tar |
将在您的当前文件夹中创建一个名为 mymagic-standalone-app.tar
的文件。在与其他用户共享 tarball 之前,请使用 chmod
设置适当的权限。
从 Tar 存档加载 Docker 镜像
在最终用户的计算机上加载 tarball 中包含的镜像,然后运行它。
$ docker load --input mymagic-standalone-app.tar |
验证镜像是否已加载。
$ docker images |
运行 Docker 镜像
$ xhost + $ docker run --rm -e "DISPLAY=:0" -v /tmp/.X11-unix:/tmp/.X11-unix mymagic-standalone-app 5 |
另请参阅
compiler.package.docker
| compiler.package.DockerOptions
| compiler.build.standaloneApplication
| compiler.runtime.download
主题
- 创建微服务 Docker 镜像 (MATLAB Compiler SDK)