想通过bash脚本了解当前正在运行的容器是否以--privileged
模式从内部容器(而非主机)启动。
目前,我仍然坚持使用带有标志的env var,但这不是一个理想的解决方案。
答案 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
或任何)将可用