現在実行中のコンテナーが--privileged
モードでinsideコンテナー(ホストコンピューターからではない)から開始された場合、bashスクリプトを介して知りたいです。
今のところ、フラグ付きのenv varを渡すことに悩まされていますが、理想的なソリューションではありません。
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