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ò.