【问题标题】:Do I need to create a new lxc(docker)-container for each task I want to sandbox?我是否需要为每个要沙盒的任务创建一个新的 lxc(docker)-container?
【发布时间】:2015-09-01 18:32:51
【问题描述】:

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

用户将他们的代码提交给服务器,我们希望在沙箱中运行代码,这样他们就不会影响服务器或彼此。

问题分为两部分:

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-questions ,这仍然让我感到困惑。

【问题讨论】:

    标签: docker virtualization lxc


    【解决方案1】:

    Docker shell 会这样做。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-25
      • 2016-09-25
      • 1970-01-01
      • 2021-11-02
      • 1970-01-01
      相关资源
      最近更新 更多