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

时间:2015-08-21 15:52:23

标签: bash shell docker containers dockerfile

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

目前,我仍然坚持使用带有标志的env var,但这不是一个理想的解决方案。

2 个答案:

答案 0 :(得分:31)

来自泊坞主机

使用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

答案 1 :(得分:-2)

如果您的docker ps命令有docker inspect

,则从容器内部,您的泊坞窗命令(docker run-v /var/run/docker.sock:/var/run/docker.sock或任何)将可用