使用自定义底图创建 Docker 图像
支持的平台:Linux®
此示例演示了如何使用自定义基础层创建 Docker® 映像。创建自定义基础层后,您可以将自己偏好的 Linux 版本或其他操作系统作为基础,从而运行命令或安装其他依赖项。
Docker 容器镜像由多个层组成。在此示例中,您将创建三个层,每个层都包含一组基于前一层构建的文件系统更改。
自定义基础层(您选择的操作系统)
次级层 (MATLAB® Runtime)
应用层(您的独立应用程序)
前提条件
验证您是否已在开发计算机上安装了 MATLAB Compiler SDK™。
通过在 MATLAB 命令行窗口中键入
[~,msg] = system("docker version"),验证您是否已在开发计算机上安装并配置了 Docker。注意
如果您使用的是 WSL,请改用
[~,msg] = system("wsl docker version")。如果您尚未安装 Docker,请按照 Docker 网站上的说明安装并设置 Docker。
docs.docker.com/engine/install/要在 Windows® 上构建微服务镜像,您必须安装 Docker Desktop 或在 Windows Subsystem for Linux v2 (WSL2) 上安装 Docker。
要安装 Docker Desktop,请参阅
docs.docker.com/desktop/setup/install/windows-install/。要在 WSL2 上安装 Docker,请参阅
https://www.mathworks.com/matlabcentral/answers/1758410-how-do-i-install-docker-on-wsl2。
您正在使用的计算机必须连接到互联网。
注意
有些可部署存档(例如 Simulink® Compiler™ 工件)并非跨平台兼容,必须在 Linux 上构建才能与 Docker 一起使用。有关详细信息,请参阅MATLAB Compiler 的限制 (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您还可以安装其他依赖项,以满足部署的各项要求。
这些软件包来自 https://github.com/mathworks-ref-arch/container-images/tree/main/matlab-runtime-deps/,适用于 Ubuntu 24.04。如果您的内部操作系统镜像源自其他任何 Linux 发行版,则必须重新创建该操作系统的依赖项列表。
在 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 文档。
另请参阅
compiler.build.standaloneApplication | compiler.runtime.createDockerImage (MATLAB Compiler SDK) | compiler.package.docker
主题
- 将 MATLAB 独立应用程序打包为 Docker 镜像
- 使用自定义基础层创建微服务 (MATLAB Compiler SDK)
