gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:40:51 31 4
gpt4 key购买 nike

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

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

最佳答案

来自 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 的命令flag 看看是否失败

例如 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

关于bash - 如何知道 docker 容器是否以特权模式运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32144575/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com