无法在Docker容器中设置function

为了运行一些仅与Ubuntu 14.04兼容的软件,我想将它部署在Docker容器中,以便它具有所有必需的依赖关系。

当这个软件试图设置一个可执行文件的function(cap_ipc_lock,cap_net_raw,cap_sys_nice,cap_net_admin)时,问题就出现了。 执行后,我得到一个Failed to set capabilities on file `path_to_file' (Operation not permitted)消息(见下面的代码)。

从Docker 文档中,我发现默认情况下容器运行的function是有限的,但是可以指定哪个容器是需要的。 但即使我用--cap-add=ALL运行它,我仍然得到了错误。 下面是C代码设置function的几条线,如果有帮助的话:

 // Create capability set const char *cap_text = "cap_ipc_lock=ep cap_net_raw=ep cap_sys_nice=ep cap_net_admin=ep"; cap_t cap_d = cap_from_text(cap_text); if (cap_d == NULL) { perror("cap_from_text"); return -1; } // Set file capability int retval = cap_set_file(EXECUTABLE, cap_d); if (retval != 0) { fprintf(stderr, "Failed to set capabilities on file `%s' (%s)\n", argv[1], strerror(errno)); return -1; } 

任何想法如何使这项工作? 谢谢

编辑:对于那些可能面临同样的问题,我find了一个解决scheme。 我没有工作,因为所有东西(源代码,可执行文件等)都在一个安装在容器内的主文件夹(-v选项)中。 直接在容器中复制所有内容解决了问题。