LXD虚拟容器挂载iso报错:mount: matlab/: mount failed: Operation not permitted

Scroll Down

LXD虚拟容器挂载iso报错:mount: matlab/: mount failed: Operation not permitted

想在LXD中安装matlab2017b,没想到在第一步挂载的时候就报错了,执行挂载命令:

sudo mount -t auto -o loop R2017b_glnxa64.iso matlab/

image.png

提示操作不允许。

网上查了一圈压根没找到相关的文章能解决这个问题,后来突发奇想:
我直接用宿主机挂载,将挂载的目录共享给容器或许能够调用,说干就干

1. 宿主机挂载iso镜像文件

宿主机中的执行

sudo mount -t auto -o loop R2017b_glnxa64.iso matlab/

image.png

然后在容器中直接进行安装

# 进入挂载目录
cd matlab/

# 执行安装
sudo ./install

嘿,没想到居然成功了

[假装这里有图.jpg]

【其实是我忘了截图哈哈哈哈】

简直是 [喜大普奔啊]

2. 番外篇

当我怀着激动地上蹿下跳的心情打算在第二个容器中安装matlab时,cd到挂载目录执行 sudo ./install 命令时,直接提示我安装完成,我当时的内心:?????,我还啥都没干呢,咋就完成了?后来想了一下会不会是LXD共用文件系统,检测到我另一个容器中安装的matlab文件了,反复试了几个容器,发现好像还真是这么回事

番番外

其实当我写这篇博客时,因为挂载的目录已经卸载又挂载上了,我又在容器中执行了install操作,发现又可以了,我丢,。。。。。之前原来是缓存搞的鬼,想想也不可能是共享文件系统错乱啊,不然写LXD的程序员还吃个锤子的饭!!!感觉自己真蠢啊,真是代码写的越多越蠢了。。。。。

这下怎么办,我是为了做多用户啊,只有一个容器有matlab不行啊,虽然可以把现在的容器做成镜像,再以这个镜像为基础创建新容器,但是感觉还是不够完美,那咋办,能不能把matlab安装在宿主机上,然后直接共享安装目录?这样一来还节省了存储空间了,嗯??????试试,试试。

3. 共享软件安装目录

在宿主机新建一个共享目录,里面按软件名称创建文件夹,然后将matlab安装到共享目录中,软件安装完了再把目录共享给所有容器。共享目录只给读和执行权限即可,数据文件直接由各容器自己存储和管理,宿主机只提供软件的执行和资源。

共享目录分配的方式最好通过profile配置文件的形式进行管理,划分的粒度更细

profile配置文件使用方法可以看 本人另一篇博客:LXD配置文件使用