go-judge
go-judge copied to clipboard
请问下本项目的沙箱是如何实现的
在接触本项目前,自己想设计个沙箱(针对java代码),想法是:每次打包jar包后新建docker容器,在容器中运行代码以确保宿主机的安全。但是这样的话,会创建出大量的容器,会严重影响性能。 想了解下本项目是如何实现沙箱功能,本项目在criyle/go-judge容器中运行代码,如何防止代码对容器中的文件做出修改,有用到哪些技术?
Linux 下沙箱的具体实现请参照 criyle/go-sandbox 项目,也可阅读博客获取一点设计考量。容器中的文件系统默认为只读挂载防止修改。