如何知道泊坞窗容器是否在特权模式下运行
想通过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
或者其他)