# Preguntas frecuentes sobre la seguridad de contenedores


## ¿Cómo se aíslan los contenedores del host en Docker Desktop?

Docker Desktop ejecuta todos los contenedores dentro de una máquina virtual Linux personalizada (excepto para los contenedores nativos de Windows). Esto agrega un fuerte aislamiento entre los contenedores y la máquina host, incluso cuando los contenedores se ejecutan como root.

Las consideraciones importantes incluyen:

- Los contenedores tienen acceso a los archivos del host configurados para el uso compartido de archivos a través de la configuración de Docker Desktop.
- De forma predeterminada, los contenedores se ejecutan como root con capacidades limitadas dentro de la máquina virtual de Docker Desktop.
- Los contenedores privilegiados (`--privileged`, `--pid=host`, `--cap-add`) se ejecutan con privilegios elevados dentro de la máquina virtual, lo que les da acceso a los elementos internos de la máquina virtual y al Docker Engine.

Con Enhanced Container Isolation (Aislamiento mejorado de contenedores) activado, cada contenedor se ejecuta en un espacio de nombres de usuario (user namespace) de Linux dedicado dentro de la máquina virtual de Docker Desktop. Incluso los contenedores privilegiados solo tienen privilegios dentro del límite de su contenedor, no de la máquina virtual. ECI utiliza técnicas avanzadas para evitar que los contenedores vulneren la máquina virtual de Docker Desktop y el Docker Engine.

## ¿A qué partes del sistema de archivos del host pueden acceder los contenedores?

Los contenedores solo pueden acceder a los archivos del host que están:

1. Compartidos a través de la configuración de Docker Desktop.
2. Montados explícitamente mediante montajes de tipo bind (bind-mount) en el contenedor (por ejemplo, `docker run -v /path/to/host/file:/mnt`).

## ¿Pueden los contenedores que se ejecutan como root acceder a archivos propiedad de administradores en el host?

No. El uso compartido de archivos del host utiliza un servidor de archivos en el espacio de usuario (que se ejecuta en `com.docker.backend` como el usuario de Docker Desktop), por lo que los contenedores solo pueden acceder a los archivos a los que el usuario de Docker Desktop ya tiene permisos para acceder.

