lxc 和 sched_setscheduler

lxc 和 sched_setscheduler

我正在尝试在 Centos 容器内运行一个应用程序,并且需要实时运行。我用谷歌搜索了一下,建议是添加 lxc.cap.keep = sys_nice。

在我这样做之后,lxc-start 抱怨只有 lxc.cap.keep 和 lxc.keep.drop 不允许并排。事实上,全局 lxc 配置文件中有几个 lxc.cap.drop 。

我该如何解决这个问题?

答案1

你只需要思考lxc.cap.keeplxc.cap.drop作为白名单和黑名单。如果不能同时使用两者,则不要将条目添加到白名单,而是从黑名单中删除该条目。事实上,如果您无法使用白名单,则意味着黑名单正在使用。如果该能力被删除,则意味着它已在黑名单中。所以你必须重新定义lxc.cap.drop

所有这些配置都已包含,/usr/share/lxc/config但可能会因(主机)发行版或软件包版本而略有不同。有时配置文件包含其他配置文件。这些条目都是累积的,因此要么必须直接编辑文件(小心升级......),要么必须找到所有条目来替换它们。

  • 最简单的是,对于全局替换,该文件/usr/share/lxc/config/centos.common.conf包含类似于以下内容的行:

    lxc.cap.drop = sys_module sys_nice sys_pacct
    

    删除不需要的条目,因此在此示例中替换为:

    lxc.cap.drop = sys_module sys_pacct
    
  • 要仅替换一个容器中的配置,请找到一种方法来枚举所有已删除的功能(一些 lxc 详细日志或任何其他方法),并且作为手动的告诉,使用没有值的条目取消黑名单,然后“重建”它。如果主机也是 CentOS,则在删除后将sys_nice其添加到容器的配置中,在任何包含之后:

    lxc.cap.drop = 
    lxc.cap.drop = mac_admin mac_override setfcap
    lxc.cap.drop = sys_module sys_pacct
    lxc.cap.drop = sys_rawio sys_time
    

相关内容