无法在Docker容器

时间:2017-08-02 07:09:31

标签: c docker

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

当此软件尝试在可执行文件(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 documentation我发现默认情况下容器运行的功能有限,但可以指定需要哪些容器。但即使我用--cap-add=ALL运行它,我仍然得到错误。以下是设置功能的几行C代码,如果它有帮助:

// 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;
  }

有关如何使这项工作的任何想法?感谢

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

0 个答案:

没有答案