【问题标题】:How do I identify if a runc container is running as privileged?如何识别 runc 容器是否以特权身份运行?
【发布时间】:2023-03-10 07:13:02
【问题描述】:

不管 docker/crio/containerd 启动容器,有没有办法了解 runc 容器是否作为特权容器运行?

docker inspect 确实显示了特权,但我想在 runc 层找到。

【问题讨论】:

    标签: docker containerd runc cri-o


    【解决方案1】:

    每个runc容器的状态和配置都可以从$ROOT_DIR/$CONTAINER_ID/state.json文件中获取,其中$ROOT_DIR是一组容器的根目录(通常由特定的容器管理)像 Docker 这样的更高级别的运行时)。例如,在我的机器上Docker使用根目录/run/docker/runtime-runc/moby,因此,我可以找到一些容器的runc级配置如下:

    # jq .config /run/docker/runtime-runc/moby/$CONTAINER_ID/state.json
    {
      "no_pivot_root": false,
      "parent_death_signal": 0,
      "rootfs": "/var/lib/docker/overlay2/<CONTAINER_ID>/merged",
      "readonlyfs": false,
    ...
    }
    

    你可以很容易地发现这个文件不包含像privileged这样的字段。快速搜索runc 源代码表明它没有特权容器的概念,即这是来自更高级别的抽象。反过来,这意味着没有简单方法可以从runc 级别确定容器是否作为特权容器启动。

    但是,仍然可以说容器是否具有与在 Docker 级别由 --privileged 参数授予的权限相同的权限state.json 文件包含功能列表,授予容器;容器可用的设备节点列表; seccomp 模式等。从实际的角度来看,浪费时间检查所有这些设置是不明智的,所以最好只看docker inspect

    【讨论】:

    • 我同意上述观点。但是在 runc 层工作让我(在一定程度上)兼容 docker、containerd 和 cri-o
    猜你喜欢
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 2020-11-16
    • 2017-10-26
    • 1970-01-01
    • 2020-12-19
    相关资源
    最近更新 更多