Auf einem neuen Ubuntu 16.04-System neues systemd &lxc 2.0
sudo grep -qa container=lxc /proc/1/environ
Der zuverlässigste Weg ist, /proc/1/cgroup
zu überprüfen . Es wird Ihnen die Kontrollgruppen des Init-Prozesses mitteilen und wann Sie nicht sind in einem Container ist das /
für alle Hierarchien. Wenn Sie drinnen sind B. ein Container, sehen Sie den Namen des Ankerpunkts. Bei LXC/Docker-Containern ist es so etwas wie /lxc/<containerid>
oder /docker/<containerid>
bzw..
Docker erstellt eine .dockerenv
Datei im Stammverzeichnis des Verzeichnisbaums im Container. Dies kann durch Ausführen eines ls -la /.dockerenv
angezeigt werden um zu zeigen, dass es beim Start des Containers erstellt wird.
Sie können dieses Skript ausführen, um Folgendes zu überprüfen:
#!/bin/bash
if [ -f /.dockerenv ]; then
echo "I'm inside matrix ;(";
else
echo "I'm living in real world!";
fi
MEHR: Ubuntu hat tatsächlich ein Bash-Skript:/bin/running-in-container
und es kann den Typ des Containers zurückgeben, in dem es aufgerufen wurde. Könnte hilfreich sein. Kenne aber keine anderen großen Distributionen.