Su un nuovo sistema Ubuntu 16.04, nuovo systemd e lxc 2.0
sudo grep -qa container=lxc /proc/1/environ
Il modo più affidabile è controllare /proc/1/cgroup . Ti dirà i gruppi di controllo del processo init e quando non lo sei in un contenitore, sarà / per tutte le gerarchie. Quando sei dentro un contenitore, vedrai il nome del punto di ancoraggio. Con i contenitori LXC/Docker, sarà qualcosa come /lxc/<containerid> o /docker/<containerid> rispettivamente.
Docker crea un .dockerenv file alla radice dell'albero delle directory all'interno del contenitore. Questo può essere visto eseguendo un ls -la /.dockerenv per mostrare che è stato creato all'avvio del contenitore.
Puoi eseguire questo script per verificare:
#!/bin/bash
if [ -f /.dockerenv ]; then
echo "I'm inside matrix ;(";
else
echo "I'm living in real world!";
fi
ALTRO: Ubuntu in realtà ha uno script bash:/bin/running-in-container e può restituire il tipo di contenitore in cui è stato invocato. Potrebbe essere utile. Non conosco altre distribuzioni importanti però.