我如何找出已赋予容器哪些功能?

Mar*_*ani 7 inspect docker

说我运行一个添加功能的容器,例如 --cap-add=SYS_ADMIN

有没有办法找出这个容器已经被分配了 SYS_ADMIN功能?

docker-inspect 似乎没有返回此类信息。

ges*_*lix 6

您已经回答了您的问题,但要添加另一个选项:您可能希望找到当前有效的功能,而不管您手动配置了哪些功能。https://github.com/riyazdf/dockercon-workshop/tree/master/capabilities提到了一些实用程序,您需要将它们安装在容器内。例子:

docker run --rm -it alpine sh -c 'apk add -U libcap; capsh --print'
Run Code Online (Sandbox Code Playgroud)

  • 在基于 ubuntu 的发行版上(至少在我的发行版中,基于 Ubu 16.04),该软件包是 `libcap2-bin` 命令当然仍然是 `capsh --print` :) 谢谢,有用的! (3认同)

Mar*_*ani 5

好吧,确实在 SO 上发布问题通常足以为自己找到答案。

docker-inspect <container_id>

[...]

"CapAdd": [
    "SYS_ADMIN"
],
"CapDrop": null,

[...]
Run Code Online (Sandbox Code Playgroud)

  • 按照 Macello 的方法,使用 Go 模板格式化程序:`docker inform --format='{{.HostConfig.CapAdd}}' container_id`、`docker inform --format='{{.HostConfig.CapDrop}}' container_id` (2认同)