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.