Yang Gao

Results 34 comments of Yang Gao
trafficstars

抱歉,并没有 `ubuntu2404` 环境,可以确认 `ubuntu2204` 是可以在 `rootless` 模式下运行的。另外可以采取的方案是在 `root` 权限下加入 `-container-cred-start 10000` 来指定容器使用 `uid` 从 `10000` 开始的临时用户

试试把运行命令改成 `["bash", "-c", "mpirun -np 8 ./test"]`,有可能缺少某些环境变量

Linux 下沙箱的具体实现请参照 [criyle/go-sandbox](https://github.com/criyle/go-sandbox) 项目,也可[阅读博客](http://criyle.github.io)获取一点设计考量。容器中的文件系统默认为只读挂载防止修改。

api gateway: - serves the static files for SPA website - `/api/ws` web socket endpoint for receiving real-time update on submissions - `/api` endpoint for AJAX calls, converting the request...

可以试试在宿主机安装 nvidia 驱动然后使用 bind mount 设备或者在 `initCmd` 内 `mknod` 创建设备的方式给容器使用。目前并没有限制容器 gpu 使用率或者显存的选项,所以在这种方式下运行时请保证同时请求数为 1 来确保容器独占设备而不产生干扰。

抱歉没有 nvdia 设备测试,不知道正确结果应当是什么。也许可以检查一下 cuda 运行环境所必须的环境变量,或者使用一些 python 库来测试。

当初设计的时候确实没有考虑到有可能需要可写入的 `/proc` ,或许下个版本可以更改当前 `mount.yaml` 的类型从 `bool` 改为 `string`。然后 - `true`,`r` 或者 `ro` 的时候只读 - `false` 或者 `` 的时候不挂载 `/proc` - `rw` 的时候可读写 如果您有不同的设计建议,欢迎提出。

其实 `go-sandbox` 一直都是以不稳定版 `0.x.y` 发布的,倒是没有特别需要保持兼容性的必要。不过感谢指出这一点,我将会进行如上修改。现在想想 `string` 类型的参数变数实在太多,还是加入 `procrw` `bool` 类型配置项更加保险。谢谢建议。

尝试进行了上述修改,可以从 [github action](https://github.com/criyle/go-judge/actions/runs/9206543660) 获取到最新的可执行文件。如果更改符合预期,我将创建一个 release 。

使用到了容器嵌套技术,这个需要特权容器,需要 --privileged 参数启动容器