En un nuevo sistema ubuntu 16.04, nuevo systemd y lxc 2.0
sudo grep -qa container=lxc /proc/1/environ
La forma más confiable es verificar /proc/1/cgroup
. Le indicará los grupos de control del proceso de inicio y cuándo no en un contenedor, será /
para todas las jerarquías. Cuando estás dentro un contenedor, verá el nombre del punto de anclaje. Con contenedores LXC/Docker, será algo así como /lxc/<containerid>
o /docker/<containerid>
respectivamente.
Docker crea un .dockerenv
archivo en la raíz del árbol de directorios dentro del contenedor. Esto se puede ver realizando un ls -la /.dockerenv
para mostrar que se crea en el inicio del contenedor.
Puede ejecutar este script para verificar:
#!/bin/bash
if [ -f /.dockerenv ]; then
echo "I'm inside matrix ;(";
else
echo "I'm living in real world!";
fi
MÁS: Ubuntu en realidad tiene un script bash:/bin/running-in-container
y puede devolver el tipo de contenedor en el que se invocó. Podría ser útil. Sin embargo, no conozco otras distribuciones importantes.