Docker大法好-关于无图形界面linux运行Matlab的方法

有一个项目需要用到matlab在linux上批量生成文件。

一、脚本+压缩包安装(不work)

由于我用的是工作站,无法图形界面安装(linux远程开图像界面有多麻烦dddd)网上搜寻了很多linux安装matlab的教程,大多是先下载matlab 的linux版本的安装包,然后经过一系列的解压,挂载,安装,破解等操作。。可能中间还要经历无数的依赖缺失和关闭图形界面的配置操作。
于是我找到一篇文章,作者很用心,写了自动化安装脚本 https://zhuanlan.zhihu.com/p/394298249 ,底下评论都说有效,而且是点击即装,我那个高兴呀,二话不说就去百度网盘下载安装包和脚本,将近20G呀。。为此又买了个百度网盘会员(为什么国内没有个好一点网盘存储啊啊啊,百度网盘限速真的太伤了,其实google drive好很多 而且可以wget 下载)。总之,我吭哧吭哧下完,再吭哧吭哧上传到服务器,然后开开心心运行安装脚本,结果第一步就懵逼,MD5 check失败!

xiaojin@proj150:~/Matlab_R2020a_Linux$ ./installMatlab.sh 
Checking ...
Matlab_R2020a_Lin64.tar.gz: FAILED
md5sum: WARNING: 1 computed checksum did NOT match

xiaojin@proj150:~/Matlab_R2020a_Linux$ md5sum Matlab_R2020a_Lin64.tar.gz 
d5471f224a3fdaee498a7fcbcd19e5c1  Matlab_R2020a_Lin64.tar.gz
xiaojin@proj150:~/Matlab_R2020a_Linux$ cat CODE.md5 
0c299e5b3a1cf3843b42e0c8e9b1375e  Matlab_R2020a_Lin64.tar.gz

17G的大文件,没下载完,但百度网盘又告诉你你确实下载完了,中途一个错误都没报。重新下载吧,结果md5值又变了,你上哪说理去= =

$ md5 Matlab_R2020a_Lin64.tar.gz
MD5 (Matlab_R2020a_Lin64.tar.gz) = 8b4115556d66ee3f9573d26e6f65aa55

下载+传输已经浪费一天时间了,果断放弃寻找他法。

二、Docker 大法(如果自己有matlab账号,那么强烈推荐此方法!)

我是喜欢用docker的,干净,方便。
抱着试一试的心态搜 Matlab的docker版本。居然真的有,而且是官方版本!
安装了一下几乎没有费什么力气就测试成功了:

docker run -it --rm --shm-size=512M mathworks/matlab:r2022b

Running matlab 
MATLAB is selecting SOFTWARE OPENGL rendering.
Please enter your MathWorks Account email address and press Enter:
<your user name>@email.xxx
Please enter your MathWorks Account password and press Enter:
<enter your password>
Starting MATLAB with license: 40821746 - MATLAB (Individual)

                                                         < M A T L A B (R) >
                                               Copyright 1984-2022 The MathWorks, Inc.
                                          R2022b Update 3 (9.13.0.2126072) 64-bit (glnxa64)
                                                          November 17, 2022

 
To get started, type doc.
For product information, visit www.mathworks.com.
 
>> a=[1,2,3;4,5,6;7,8,9];
>> b=[2;3;3];
>> a*b

ans =

    17
    41
    65

>> exit
>

总结一下步骤:

  1. 安装docker
  • 服务器安装docker 参考教程 https://docs.docker.com/engine/install/ubuntu/
  • 服务器如果有代理需要配置,请先配置好docker engine的proxy 和docker runtime的proxy。这是两个概念:
    • docker engine的proxy是在docker pull 拉取远程镜像起作用
      • 参考 https://docs.docker.com/config/daemon/systemd/#httphttps-proxy
    • docker runtime的proxy是在docker run 的容器内部,使容器内部有网
      • 参考步骤:https://docs.docker.com/network/proxy/

需要注意的是如果在生产环境 sudo systemctl daemon-reload谨慎使用

  1. 拉取Matlab Docker image 参考 https://hub.docker.com/r/mathworks/matlab
docker pull mathworks/matlab
  1. 不出意外,matlab可以正常使用了!
  • 交互式界面
$ docker run -it --rm --shm-size=512M mathworks/matlab:r2022b

注意!需要你输入有license的账户和密码哦。如果是在学校,一般会有教育账户的。我这里是直接输入了我的账号。

  • 用license file启动
    如果你有license file ,可以把他mount到matlab容器里。下面的命令 MLM_LICENSE_FILE即为你的license file。rand为matlab命令,如果license file正确,下面的语句会运行然后容器自动退出。
$ docker run --rm -v /path/to/local/license/file:/licenses/license.lic -e MLM_LICENSE_FILE=/licenses/license.lic mathworks/matlab:r2022b -batch rand
  • 打开网页版
$ docker run -it --rm -p 8888:8888 --shm-size=512M mathworks/matlab:r2022b -browser
  • 进入container 内部 然后用bash运行脚本
$ docker run -it --rm --shm-size=512M mathworks/matlab:r2022b -shell

你可能感兴趣的:(docker,生产力,Linux,matlab,linux,docker)