如何设置docker进程的负精确性?

如何设置docker进程的负精确性?,docker,privileges,nice,Docker,Privileges,Nice,我有一个docker映像中代码的测试环境,通过在容器中运行bash使用该环境: me@host$ docker run -ti myimage bash 在容器内,我通常通过以下方式启动程序: root@docker# ./myprogram 然而,我希望我的程序的过程有一个负面的精确性(这是有正当理由的)。然而: root@docker# nice -n -7 ./myprogram nice: cannot set niceness: Permission denied 假设docke

我有一个docker映像中代码的测试环境,通过在容器中运行bash使用该环境:

me@host$ docker run -ti myimage bash
在容器内,我通常通过以下方式启动程序:

root@docker# ./myprogram
然而,我希望我的程序的过程有一个负面的精确性(这是有正当理由的)。然而:

root@docker# nice -n -7 ./myprogram
nice: cannot set niceness: Permission denied
假设docker是由docker守护进程运行的,docker守护进程以root身份运行,而我是容器中的root用户,那么为什么这不起作用,并且如何强制实现负精确性

注意:docker映像运行的是debian/sid,主机是ubuntu/12.04。

尝试添加

--privileged=true
到您的run命令

[edit]privileged=true是旧方法。看起来像

--cap-add=SYS_NICE

也应该可以工作。

您还可以使用
-c
为CPU共享设置整个容器的CPU优先级

  • Docker文档
  • cgroup/cpu.shares文档

--privileged=true
工作起来很有魅力(我的docker版本似乎不是最前沿的)。谢谢。在我的系统上,我得到了来自守护进程的
docker:Error响应:linux规范功能:添加未知功能:“CAP\u CAP\u SYS\u NICE”。
使用
--CAP add=SYS\u NICE
工作。