如何知道 docker 容器是否处于特权模式 运行

How to know if a docker container is running in privileged mode

想通过 bash 脚本了解当前 运行 容器是否从 内部 容器以 --privileged 模式启动(不是从主机)。

现在我坚持传递带有标志的环境变量,但这不是一个理想的解决方案。

来自 docker 主机

使用docker inspect命令:

docker inspect --format='{{.HostConfig.Privileged}}' <container id>

并且在 bash 脚本中您可以进行测试:

if [[ $(docker inspect --format='{{.HostConfig.Privileged}}' <container id>) == "false" ]]; then
    echo not privileged
else
    echo privileged
fi

从容器内部

你必须尝试 运行 需要 --privileged 标志的命令,看看它是否失败

例如ip link add dummy0 type dummy是一个需要--privileged标志才能成功的命令:

$ docker run --rm -it ubuntu ip link add dummy0 type dummy
RTNETLINK answers: Operation not permitted

同时

$ docker run --rm -it --privileged ubuntu ip link add dummy0 type dummy

运行很好。

在 bash 脚本中,您可以执行类似的操作:

ip link add dummy0 type dummy >/dev/null
if [[ $? -eq 0 ]]; then
    PRIVILEGED=true
    # clean the dummy0 link
    ip link delete dummy0 >/dev/null
else
    PRIVILEGED=false
fi

如果您的 docker run 命令具有 -v /var/run/docker.sock:/var/run/docker.sock[,您的 docker 命令(docker psdocker inspect 或任何命令)将在容器内部可用=14=]