如何知道泊坞窗容器是否在特权模式下运行

想通过bash脚本知道,如果当前正在运行的容器是从容器内(而不是主机)以 – --privileged模式启动的。

现在我坚持与国旗传递一个env var,但不是一个理想的解决scheme。

从docker主机

使用docker inspect命令:

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

在一个bash脚本中,你可以进行testing:

 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 ps或者docker inspect或者其他)