Sur un nouveau système Ubuntu 16.04, nouveau systemd &lxc 2.0
sudo grep -qa container=lxc /proc/1/environ
Le moyen le plus fiable est de vérifier /proc/1/cgroup
. Il vous indiquera les groupes de contrôle du processus d'initialisation, et quand vous n'êtes pas dans un conteneur, ce sera /
pour toutes les hiérarchies. Quand vous êtes à l'intérieur un conteneur, vous verrez le nom du point d'ancrage. Avec les conteneurs LXC/Docker, ce sera quelque chose comme /lxc/<containerid>
ou /docker/<containerid>
respectivement.
Docker crée un .dockerenv
fichier à la racine de l'arborescence de répertoires à l'intérieur du conteneur. Cela peut être vu en effectuant un ls -la /.dockerenv
pour montrer qu'il est créé au démarrage du conteneur.
Vous pouvez exécuter ce script pour vérifier :
#!/bin/bash
if [ -f /.dockerenv ]; then
echo "I'm inside matrix ;(";
else
echo "I'm living in real world!";
fi
PLUS : Ubuntu a en fait un script bash :/bin/running-in-container
et il peut renvoyer le type de conteneur dans lequel il a été invoqué. Peut être utile. Je ne connais pas les autres distributions majeures.