🧠 Ubuntu 安装 GPU 加速版 MATLAB R2022b Docker 环境(完整教程)


🚀 一、准备阶段

1. 确认系统与驱动

nvidia-smi

若能显示 GPU 型号和 CUDA 版本(例如 CUDA 12.8),则驱动已安装。


2. 安装 Docker 与 NVIDIA 扩展

sudo apt update
sudo apt install -y docker.io
sudo systemctl enable docker --now

安装 NVIDIA 容器工具包:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
  sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

curl -s -L https://nvidia.github.io/libnvidia-container/ubuntu22.04/libnvidia-container.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

sudo apt update
sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker

验证:

docker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi

如能输出 GPU 状态,说明 CUDA 容器访问成功。


🧩 二、准备 MATLAB 文件夹

假设你已在主目录下解压:

~/matlab_R2022b_glnxa64/

🧱 三、创建 Docker 构建环境

1. 创建构建目录

mkdir ~/matlab_docker && cd ~/matlab_docker

2. 创建 Dockerfile

nano Dockerfile

粘贴以下内容:

FROM nvidia/cuda:12.4.0-base-ubuntu22.04

# 安装基础图形依赖与系统字体
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
    libx11-6 libxext6 libxmu6 libxt6 libxrender1 libxrandr2 \
    libxi6 libglu1-mesa libnss3 libasound2 libxcb1 \
    libxfixes3 libxcursor1 libxinerama1 libatk1.0-0 libgtk-3-0 \
    libcanberra-gtk-module libcanberra-gtk3-module libxcomposite1 \
    libxdamage1 libxtst6 fonts-dejavu-core fontconfig locales \
    && rm -rf /var/lib/apt/lists/*

# 安装 Java 支撑环境(用于 DPABI、SPM 等工具)
RUN apt-get update && apt-get install -y openjdk-11-jdk

# 环境变量设置
ENV LANG=C.UTF-8
ENV QT_X11_NO_MITSHM=1
ENV QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms
ENV LD_LIBRARY_PATH=/usr/lib/jvm/java-11-openjdk-amd64/lib:/opt/matlab/bin/glnxa64:/usr/lib/x86_64-linux-gnu
ENV DISPLAY=:0
ENV LIBGL_ALWAYS_INDIRECT=0

# 默认启动 MATLAB 图形界面
CMD ["/opt/matlab/bin/matlab", "-desktop"]

保存后退出。


3. 构建镜像

docker build -t matlab2022b-gpu .

等待几分钟,构建成功后显示:

Successfully tagged matlab2022b-gpu:latest

🧭 四、创建启动脚本

创建:

sudo nano /usr/local/bin/matlab22

写入以下内容:

#!/bin/bash
xhost +local:root

docker run --rm \
  --gpus all \
  -e DISPLAY=$DISPLAY \
  -e QT_QPA_PLATFORM=xcb \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -v /home/$USER:/home/$USER \
  -v /home/$USER/matlab_R2022b_glnxa64:/opt/matlab \
  matlab2022b-gpu

保存后:

sudo chmod +x /usr/local/bin/matlab22

🪟 五、创建桌面启动图标

1. 新建 Desktop 文件

nano ~/.local/share/applications/matlab22.desktop

写入以下内容:

[Desktop Entry]
Type=Application
Name=MATLAB R2022b
Exec=/usr/local/bin/matlab22
Icon=/home/zfy/matlab_R2022b_glnxa64/toolbox/shared/dastudio/resources/MatlabIcon.png
Comment=MATLAB 2022b (Docker GPU)
Categories=Development;Education;
Terminal=false

保存并刷新桌面数据库:

sudo update-desktop-database

2. 赋予执行权限

chmod +x ~/.local/share/applications/matlab22.desktop

现在你可以在 启动器或桌面图标 点击打开 MATLAB!


🧪 六、验证功能

  1. 在命令窗口输入:

    version -java
    

    应显示:

    Java 11.0.x (OpenJDK 64-Bit Server VM)
    
  2. 检查 GPU 是否启用:

    gpuDevice
    

    应输出 GPU 信息。

  3. 若出现软件 OpenGL 警告:
    在 MATLAB 中输入:

    opengl hardware
    savepref('matlab.graphics.opengl','Renderer','hardware')
    

🧰 七、常见问题汇总

问题原因解决方法
libnativewindow_awt.so 找不到缺少 Java AWT 库在 Dockerfile 中添加 openjdk-11-jdk
MATLAB has disabled some advanced graphics软件渲染在 MATLAB 内执行 opengl hardware
GUI 打不开X11 未映射确保 xhost +local:root 已执行
无法访问 /home未挂载宿主路径docker run 中添加 -v /home/$USER:/home/$USER
启动提示 “as root”MATLAB 在容器中默认 root无碍,可忽略

✅ 八、总结

最终效果:

  • 双击图标即可打开 MATLAB GUI
  • 自动加载 GPU 支持
  • 完整兼容 DPABI、SPM、EEGLAB 等图形化神经影像工具
  • /home 与宿主系统文件双向同步

更多推荐