我需要为编程竞赛开发后端。
用户将他们的代码提交给服务器,我们希望在沙箱中运行代码,这样他们就无法同时影响服务器。
问题分为两部分:
1。这是正确的,每次我想得到用户的解决方案我都需要(大致):
#!/usr/bin/python3
c = lxc.Container("apicontainer")
c.create("download", lxc.LXC_CREATE_QUIET, {"dist": "ubuntu",
"release": "trusty",
"arch": "i386"})
c.start()
c.execute('score_solution_script_inside_container')
c.shutdown()
c.destroy()
或c.clone(...)
好吧但是执行上面提到的似乎需要一段时间,所以是不是这样?
2. 我应该将LXC用于我的目的还是应该使用Docker?
由于第二部分,我担心这个问题会被搁置,但我已经阅读了几个关于lxc和Docker之间差异的SO问题,但它仍然让我感到困惑。答案 0 :(得分:0)
Docker shell可以做到这一点。
每次运行dsh
命令时,它都会启动一个容器,您既可以将其用作shell,也可以提供运行命令。退出后,将移除容器。