希望能够通过bash脚本了解当前正在运行的容器是否从容器内部以--privileged
模式启动(而不是从主机上启动)。
目前我只能通过传递带有标志的环境变量来解决问题,但这并不是理想的解决方案。
希望能够通过bash脚本了解当前正在运行的容器是否从容器内部以--privileged
模式启动(而不是从主机上启动)。
目前我只能通过传递带有标志的环境变量来解决问题,但这并不是理想的解决方案。
使用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
从容器内部来看,如果你的docker run
命令带有-v /var/run/docker.sock:/var/run/docker.sock
参数,那么你可以使用docker ps
、docker inspect
或其他任何docker命令。
docker_container
将容器设置为特权模式并添加权限,但是没有成功,没有错误消息,但最终容器根本没有以特权模式运行。有人知道如何解决这个问题吗? - zevarito