Hay un buen artículo en la documentación de Docker sobre seguridad con Docker: https://docs.docker.com/articles/security/
Sin embargo, no me queda muy claro cómo los procesos con privilegios de root en el contenedor realmente se ejecutan en el sistema host, y cómo se supone que debo configurar SELinux para manejar el riesgo de que el proceso se "filtre" fuera del contenedor.
Por ejemplo, estoy ejecutando nginx en un contenedor, y cuando hago " ps " fuera del contenedor, puedo ver todos los procesos de nginx.
root 7281 4078 0 01:36 ? 00:00:00 nginx: master process nginxwww-data 7309 7281 0 01:36 ? 00:00:00 nginx: worker processwww-data 7310 7281 0 01:36 ? 00:00:00 nginx: worker processwww-data 7311 7281 0 01:36 ? 00:00:00 nginx: worker processwww-data 7312 7281 0 01:36 ? 00:00:00 nginx: worker process
Esto no es una sorpresa, ya que esta es la forma en que funciona Docker: no es una virtualización en la que no aparece nada fuera de una máquina virtual. Con Docker, los procesos de un contenedor se ejecutan en el sistema operativo host dentro de espacios de nombres y privilegios limitados. Están hablando directamente con el núcleo del host.
En esta situación, creo que debería configurar SELinux para proteger el proceso nginx en lugar del de docker, como si se estuviera ejecutando sin docker. ¿Es correcto?
Además, ¿hay alguna configuración específica de Docker más apropiada para ejecutar servidores web como nginx ?