在Docker应用程序中,对/ proc / self / pagemap的访问显示操作不被允许

正如在标题中所说的,在操作系统中,对于OS中的/ proc //页面映射,所有者是启动这个应用程序的用户,权限是-r ——–。 Docker应用程序中的用户是另一个用户,他们无法读取此文件。 那么我们可以在Docker应用程序中读取它呢?

如果我理解你的问题:你可能需要使用setuid()成为读取文件的有效用户。 如果你有一个Java应用程序,然后将其包装在shell脚本中,并从Java调用。

所以下面是你可以做的,作为一个例子

  1. 编写一个shell脚本或c程序:说“proc_read_util”来读取和打印/ proc / self / pagemap文件

  2. chmod u + s proc_read_util

  3. 从你的应用程序调用这个程序,获取输出和处理。

Linux版本4.0以后,包括由修补程序( https://lwn.net/Articles/642075/ )返回的那些版本,需要CAP_SYS_ADMIN来访问/ proc / pid / pagemap。 目前,使用–priviledged运行docker可以帮助解决使用Docker丢失意义的代价。