Na novém systému ubuntu 16.04, nový systemd &lxc 2.0
sudo grep -qa container=lxc /proc/1/environ
Nejspolehlivějším způsobem je zkontrolovat /proc/1/cgroup
. Řekne vám kontrolní skupiny procesu init a kdy ne v kontejneru, to bude /
pro všechny hierarchie. Když jste uvnitř kontejner, uvidíte název kotevního bodu. S kontejnery LXC/Docker to bude něco jako /lxc/<containerid>
nebo /docker/<containerid>
respektive.
Docker vytvoří .dockerenv
soubor v kořenovém adresáři stromu adresářů uvnitř kontejneru. To lze vidět provedením ls -la /.dockerenv
ukázat, že je vytvořen při spuštění kontejneru.
Pro ověření můžete spustit tento skript:
#!/bin/bash
if [ -f /.dockerenv ]; then
echo "I'm inside matrix ;(";
else
echo "I'm living in real world!";
fi
VÍCE: Ubuntu má ve skutečnosti bash skript:/bin/running-in-container
a může vrátit typ kontejneru, ve kterém byl vyvolán. Může být užitečné. Nevím však o jiných velkých distribucích.