此存储库向您展示如何使用 MATLAB 包管理器 ( mpm ) 为 MATLAB® 及其工具箱构建和自定义 Docker® 容器。
您可以使用此容器映像作为可扩展且可重现的方法来部署和测试 MATLAB 代码。
如果您想要一种轻量级且简单的方法来创建 MATLAB 容器映像,请使用此顶级存储库中的 Dockerfile。您还可以从此处下载基于此 Dockerfile 的预构建映像。
有关替代资源,请参阅包含以下 Dockerfile 的替代文件夹:
mpm
在容器中安装 MATLAB。这允许您安装 mpm 当前不支持的工具箱。如果您更喜欢使用 MATLAB 安装程序工作流程而不是mpm
,请使用此 Dockerfile 。mathworks/matlab
容器映像上安装额外的工具箱,请使用此 Dockerfile。此 Dockerfile 包含 Docker Hub 上 MATLAB 映像的功能,允许您通过浏览器、批处理模式或交互式命令提示符访问 Docker 化的 MATLAB。有关更多 Docker 相关资源,请参阅更多 MATLAB Docker 资源。
通过直接从 GitHub® 下载此存储库,或克隆此存储库然后导航到相应的文件夹来访问此 Dockerfile。
git clone https://github.com/mathworks-ref-arch/matlab-dockerfile.git
cd matlab-dockerfile
使用您选择的名称和标签构建容器。
docker build -t matlab:R2024b .
运行容器。通过运行示例 MATLAB 命令(例如 ver.)来测试容器。
docker run --init --rm -e MLM_LICENSE_FILE=27000@MyServerName matlab:R2024b -batch ver
Dockerfile 默认为 MATLAB R2024b 构建容器。
示例命令ver
显示 MATLAB 和其他已安装产品的版本号。欲了解更多信息,请参阅版本。有关运行容器的更多信息,请参阅运行容器部分。
笔记
在
docker run
命令中使用--init
标志可确保在发出docker stop
或docker kill
命令时容器正常停止。有关更多信息,请参阅以下链接:
- Docker 运行参考页面。
- 关于 init 用法的博客文章。
默认情况下,Dockerfile 会在/opt/matlab/${MATLAB_RELEASE}
文件夹中安装最新可用 MATLAB 版本的 MATLAB,而无需任何其他工具箱或产品。
使用以下选项来自定义您的构建。
Dockerfile 支持以下 Docker 构建时变量:
参数名称 | 默认值 | 描述 |
---|---|---|
MATLAB_RELEASE | R2024b | 要安装的 MATLAB 版本,例如R2023b 。 |
MATLAB_产品_列表 | MATLAB | 要安装为空格分隔列表的产品。有关更多信息,请参阅 MPM.md。例如: MATLAB Simulink Deep_Learning_Toolbox Fixed-Point_Designer |
MATLAB_INSTALL_LOCATION | /opt/matlab/R2024b | MATLAB 的安装路径。 |
LICENSE_SERVER | 未设置 | 运行 Network License Manager 的计算机的端口和主机名,使用port@hostname 语法。例如: 27000@MyServerName |
将这些参数与docker build
命令一起使用来自定义您的映像。或者,您可以直接在 Dockerfile 中更改这些参数的默认值。
例如,要构建 MATLAB R2019b 的图像,请使用此命令。
docker build --build-arg MATLAB_RELEASE=R2019b -t matlab:R2019b .
例如,要使用 MATLAB 和 Simulink® 构建图像,请使用此命令。
docker build --build-arg MATLAB_PRODUCT_LIST= ' MATLAB Simulink ' -t matlab:R2024b .
例如,要使用安装在 /opt/matlab 的 MATLAB 构建映像,请使用此命令。
docker build --build-arg MATLAB_INSTALL_LOCATION= ' /opt/matlab ' -t matlab:R2024b .
在docker build
命令中包含许可证服务器信息意味着您在运行容器时不必传递它。
# Build container with the License Server.
docker build --build-arg LICENSE_SERVER=27000@MyServerName -t matlab:R2024b .
# Run the container, without needing to pass license information.
docker run --init --rm matlab:R2024b -batch ver
此容器需要网络许可证管理器来许可和运行 MATLAB。您将需要 Network License Manager 的端口和主机名,或者network.lic
文件。
步骤 1 :联系您的系统管理员,他可以提供以下信息之一:
服务器的地址及其运行的端口。例如: [email protected]
包含以下行的network.lic
文件:
# Sample network.lic
SERVER MyServerName.example.com < optional-mac-address > 27000
USE_SERVER
license.dat
文件。打开license.dat
文件,找到SERVER
行,然后提取port@hostname
,或者通过复制SERVER
行并在其下方添加USE_SERVER
行来创建network.lic
文件。
# snippet from sample license.dat
SERVER MyServerName.example.com < mac-address > 27000
步骤 2 :通过docker build
或docker run
命令使用port@hostname
或network.lic
文件。
使用docker build
命令,可以:
指定LICENSE_SERVER
构建参数。
# Example
docker build -t matlab:R2024b --build-arg LICENSE_SERVER=27000@MyServerName .
使用network.lic
文件:
network.lic
文件放在与 Dockerfile 相同的文件夹中。COPY network.lic /opt/matlab/licenses/
行的注释。LICENSE_SERVER
build-arg 的 docker build 命令: # Example
docker build -t matlab:R2024b .
通过docker run
命令,使用MLM_LICENSE_FILE
环境变量。例如:
docker run --init --rm -e MLM_LICENSE_FILE=27000@MyServerName matlab:R2024b -batch ver
如果您在构建映像时未提供许可证服务器信息,请在运行容器时提供。使用-e
标志设置环境变量MLM_LICENSE_FILE
,网络许可证管理器的位置采用格式port@hostname
。
# Start MATLAB, print version information, and exit:
docker run --init --rm -e MLM_LICENSE_FILE=27000@MyServerName matlab:R2024b -batch ver
如果您在构建映像时提供了许可证服务器信息,则可以在不指定MLM_LICENSE_FILE
的情况下运行容器,如下例所示。
要启动容器并在交互式命令提示符中运行 MATLAB,请执行:
docker run --init -it --rm matlab:R2024b
要启动容器,请运行 MATLAB 命令,然后退出,执行:
# Container runs the command RAND in MATLAB and exits.
docker run --init --rm matlab:R2024b -batch rand
要覆盖容器的默认行为并使用任何参数集(例如-logfile
运行 MATLAB,请执行:
docker run --init -it --rm matlab:R2024b -logfile " logfilename.log "
要了解更多信息,请参阅文档:常用启动选项。
探索 Docker Hub 上预构建的 MATLAB Docker 容器:https://hub.docker.com/r/mathworks
使用 MATLAB 依赖项存储库启用其他功能。对于某些工作流和工具箱,您必须指定依赖项。如果您想要执行以下任一任务,则必须执行此操作:
matlab-deps 存储库存储库列出了各种版本和平台的 Dockerfile。要查看 R2024b 的 Dockerfile,请单击此处。
这些 Dockerfile 包含注释行以及支持这些附加功能的库。将这些行复制并取消注释到您的 Dockerfile 中。
您可以通过提供有关如何使用 MathWorks 产品的用户体验信息来帮助改进 MATLAB。您的参与确保您得到代表并帮助我们设计更好的产品。要选择退出此服务,请删除 Dockerfile 中的以下行:
ENV MW_DDUX_FORCE_ENABLE=true MW_CONTEXT_TAGS=MATLAB:DOCKERFILE:V1
要了解更多信息,请参阅文档:帮助使 MATLAB 变得更好 - 常见问题。
我们鼓励您在您的环境中尝试此存储库并提供反馈。如果您遇到技术问题或有增强请求,请在此处创建问题。
版权所有 2021-2024 MathWorks, Inc.