我是否需要为我想要沙箱的每个任务创建一个新的lxc(docker)-container?

时间:2015-09-01 18:32:52

标签: docker virtualization lxc

我需要为编程竞赛开发后端。

用户将他们的代码提交给服务器,我们希望在沙箱中运行代码,这样他们就无法同时影响服务器。

问题分为两部分:

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问题,但它仍然让我感到困惑。

1 个答案:

答案 0 :(得分:0)

Docker shell可以做到这一点。

每次运行dsh命令时,它都会启动一个容器,您既可以将其用作shell,也可以提供运行命令。退出后,将移除容器。

https://github.com/Solfisk/dsh/blob/master/README.md