主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

compiler.package.docker

Docker 操作系统上由 MATLAB Compiler 生成的文件创建 Linux 映像

  • 该函数仅支持 Linux® 操作系统。

  • 从 R2020b 开始,只有独立应用程序可以打包到 Docker® 映像中。

说明

compiler.package.docker(results) 使用 compiler.build.Results 对象 resultsMATLAB® Compiler™ 生成的文件创建一个 Docker 映像。结果对象由 compiler.build 函数创建。

示例

compiler.package.docker(results,Name,Value) 使用 compiler.build.Results 对象 results 和指定为一个或多个名称-值对的附加选项创建 Docker 映像。选项包括构建文件夹、入口点命令和图像名称。

示例

compiler.package.docker(results,'Options',opts) 使用 compiler.build.Results 对象 resultsDockerOptions 对象 opts 指定的附加选项创建 Docker 映像。如果使用 DockerOptions 对象,则不能使用名称-值对指定任何其他选项。

示例

compiler.package.docker(files,filepath,'ImageName',imageName) 使用由 MATLAB Compiler 生成的 files 创建 Docker 映像。Docker 镜像名称由 imageName 指定。

示例

compiler.package.docker(files,filepath,'ImageName',imageName,Name,Value) 使用由 MATLAB Compiler 生成的 files 创建 Docker 映像。Docker 镜像名称由 imageName 指定。附加选项被指定为一个或多个名称-值对。

示例

compiler.package.docker(files,filepath,'Options',opts) 使用 MATLAB Compiler 生成的 filesDockerOptions 对象 opts 指定的附加选项创建 Docker 映像。如果使用 DockerOptions 对象,则不能使用名称-值对指定任何其他选项。

示例

示例

全部折叠

从 Docker 系统上的独立应用程序创建 Linux 映像。

在您的系统上安装并配置 Docker

使用 magicsquare.m 创建一个独立应用程序并将构建结果保存到 compiler.build.Results 对象。

appFile = fullfile(matlabroot,'extern','examples','compiler','magicsquare.m');
buildResults = compiler.build.standaloneApplication(appFile);

Results 对象作为输入传递给 compiler.package.docker 函数来构建 Docker 映像。

compiler.package.docker(buildResults);

在 Docker 系统上使用名称-值对自定义独立 Linux 映像,以指定映像名称和构建目录。

使用 magicsquare.m 创建一个独立应用程序并将构建结果保存到 compiler.build.Results 对象。

appFile = fullfile(matlabroot,'extern','examples','compiler','magicsquare.m');
buildResults = compiler.build.standaloneApplication(appFile);

使用 Results 对象构建 Docker 映像并将其他选项指定为名称-值参量。

compiler.package.docker(buildResults,...
'ImageName','mymagicapp',...
'DockerContext','/home/mluser/Documents/MATLAB/docker');

使用 Docker 系统上的 DockerOptions 对象自定义 Linux 映像。

使用 hello_world.m 创建一个独立应用程序并将构建结果保存到 compiler.build.Results 对象。

buildResults = compiler.build.standaloneApplication('hello_world.m');

创建 DockerOptions 对象来指定其他构建选项,例如设置自定义映像名称和禁用 Docker 构建命令。

opts = compiler.package.DockerOptions(buildResults,...
'ImageName','hellodocker');

您可以使用点符号修改现有 DockerOptions 对象的属性值。例如,无需调用“docker build”即可填充 DockerContext 文件夹。

opts.ExecuteDockerBuild = 'Off';

DockerOptionsResults 对象作为输入传递给 compiler.package.docker 函数来构建 Docker 映像。

compiler.package.docker(buildResults,'Options',opts);

使用 MATLAB Compiler 生成的文件创建 Docker 映像,并在 Linux 系统上指定映像名称。

使用 mcc 命令编译独立应用程序。

mcc -o runmyapp -m myapp.m

通过将生成的文件传递给 compiler.package.docker 函数来构建 Docker 映像。

compiler.package.docker('runmyapp','requiredMCRProducts.txt',...
'ImageName','launchapp','EntryPoint','runmyapp');

使用 MATLAB Compiler 生成的文件和 Docker 系统上的 DockerOptions 对象自定义 Linux 映像。

使用 hello_world.m 创建一个独立应用程序并将构建结果保存到 compiler.build.Results 对象。

buildResults = compiler.build.standaloneApplication('hello_world.m');

创建一个 DockerOptions 对象来指定其他构建选项,例如构建文件夹。

opts = compiler.package.DockerOptions(buildResults,...    
'DockerContext','DockerImages')
opts = 

  DockerOptions with properties:

                EntryPoint: 'hello_world'
                 ImageName: 'hello_world'
              RuntimeImage: ''
    AdditionalInstructions: {}
        AdditionalPackages: {}
        ExecuteDockerBuild: on
             ContainerUser: 'appuser'
             DockerContext: './DockerImages'
            VerbosityLevel: 'verbose'

通过将生成的文件传递给 compiler.package.docker 函数来构建 Docker 映像。

cd helloworldstandaloneApplication

compiler.package.docker('hello_world','requiredMCRProducts.txt',...
'Options',opts);

输入参数

全部折叠

compiler.build 函数创建的构建结果,指定为 compiler.build.Results 对象。

要安装的文件和文件夹,指定为字符向量、字符串标量、字符串数组或字符串元胞数组。这些文件通常由 MATLAB Compiler 生成,还可以包含安装的应用程序运行所需的任何其他文件和文件夹。可以使用同一版本的 compiler.package.docker 函数打包特定版本的 MATLAB Compiler 生成的文件。

示例: 'myDockerFiles/'

数据类型: char | string | cell

requiredMCRProducts.txt 文件的路径,指定为字符向量或字符串标量。该文件由 MATLAB Compiler 生成。该路径可以是相对于当前工作目录的路径,也可以是绝对路径。

示例: '/home/mluser/Documents/MATLAB/magicsquare/requiredMCRProducts.txt'

数据类型: char | string

Docker 镜像的名称。它必须符合 Docker 命名规则。

示例: 'helloworld'

数据类型: char | string

Docker 选项,指定为 DockerOptions 对象。

名称-值参数

全部折叠

Name1=Value1,...,NameN=ValueN 的形式指定可选参量对组,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: 'ExecuteDockerBuild','on'

自 R2022b 起

传递给 Docker 映像的附加命令,指定为字符向量、字符串标量或字符向量元胞数组。命令被添加到 Dockerfile 并在映像生成期间执行。

有关有效 Dockerfile 命令的信息,请参阅 https://docs.docker.com/engine/reference/builder/

示例: 'AdditionalInstructions',{'RUN mkdir /myvol','RUN echo "hello world" > /myvol/greeting','VOLUME /myvol'}

数据类型: char | string

自 R2022b 起

要安装到 Ubuntu® 映像中的附加 Docker 22.04 软件包,指定为字符向量、字符串标量或字符向量元胞数组。

示例: 'AdditionalPackages','syslog-ng'

数据类型: char | string

自 R2023b 起

Linux 容器将以 Docker 用户的名称运行,指定为字符向量或字符串标量。该参量必须符合系统用户命名标准。如果指定的用户在创建时不存在,则将创建一个没有权限的新用户。如果未设置该属性,容器将默认以用户 appuser 运行,或者以 FROM 中的 Dockerfile 命令中指定的用户运行。

示例: 'ContainerUser','root'

数据类型: char | string

构建 Docker 映像的构建文件夹的路径,指定为字符向量或字符串标量。该路径可以是相对于当前工作目录的路径,也可以是绝对路径。

如果未指定路径,该函数会在当前工作目录中创建一个名为 ImageNamedocker 的构建文件夹。

示例: 'DockerContext','/home/mluser/Documents/MATLAB/docker/magicsquaredocker'

数据类型: char | string

在图像启动时执行的命令,指定为字符向量或字符串标量。

示例: 'EntryPoint','exec top -b'

数据类型: char | string

用于构建 Docker 映像的标志,指定为 'on''off',或者指定为数字或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true,值 'off' 等效于 false。因此,可以将此属性的值用作逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

  • 如果将此属性设置为 'on',则该函数将构建 Docker 映像。

  • 如果将此属性设置为 'off',则该函数将填充 DockerContext 文件夹而不调用“docker build”。

示例: 'ExecuteDockerBuild','Off'

数据类型: logical

Docker 映像的名称,指定为字符向量或字符串标量。名称必须符合 Docker 命名规则。Docker 存储库 Docker 必须小写。如果主可执行文件或存档文件使用大写字母命名,则 Docker 映像名称中的大写字母将替换为小写字母。

示例: 'ImageName','magicsquare'

数据类型: char | string

自 R2023b 起

MATLAB Runtime 图像的名称,指定为字符向量或字符串标量。您可以使用 compiler.runtime.createDockerImage (MATLAB Compiler SDK) 函数创建可运行多个应用程序的自定义 MATLAB Runtime 映像。如果未指定,MATLAB Compiler 将生成一个选择性的 MATLAB Runtime 映像,该映像只能运行打包的应用程序。

示例: 'RuntimeImage','mcrimage'

数据类型: char | string

自 R2023b 起

输出详细程度,指定为下列选项之一:

  • 'verbose'(默认)- 显示所有屏幕输出,包括来自命令“ docker pull ' 和 ' docker build ' 的 Docker 输出。

  • 'concise' - 显示不带 Docker 输出的进度信息

  • 'none' - 不显示输出。

示例: 'VerbosityLevel','concise'

数据类型: char | string

版本历史记录

在 R2020b 中推出