web-dev-qa-db-fra.com

Comment savoir si un conteneur Docker s'exécute en mode privilégié

J'aimerais savoir via le script bash, si le conteneur en cours d'exécution a été démarré dans --privileged mode depuis à l'intérieur le conteneur (pas depuis la machine hôte).

Pour l'instant, je suis coincé avec passer un var env avec le drapeau, mais ce n'est pas une solution idéale.

22
Leo Gallucci

Depuis l'hôte docker

Utilisez la commande docker inspect :

docker inspect --format='{{.HostConfig.Privileged}}' <container id>

Et dans un script bash, vous pourriez avoir un test:

if [[ $(docker inspect --format='{{.HostConfig.Privileged}}' <container id>) == "false" ]]; then
    echo not privileged
else
    echo privileged
fi

De l'intérieur du conteneur lui-même

Vous devez essayer d'exécuter une commande qui nécessite le --privileged flag et voir s'il échoue

Par exemple ip link add dummy0 type dummy est une commande qui nécessite le --privileged drapeau pour réussir:

$ docker run --rm -it ubuntu ip link add dummy0 type dummy
RTNETLINK answers: Operation not permitted

tandis que

$ docker run --rm -it --privileged ubuntu ip link add dummy0 type dummy

fonctionne bien.

Dans un script bash, vous pouvez faire quelque chose de similaire à ceci:

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
45
Thomasleveil