Docker con socket X11 compartido: ¿Por qué puede "iniciar" Firefox fuera del contenedor?

Tengo el siguiente escenario:

  1. Configuré un contenedor Docker con acceso al socket X11, esencialmente lo hice: https://stackoverflow.com/a/25334301
  2. Luego instalé Firefox dentro del contenedor y lo inicié usando el command "firefox" en bash.

Lo que noté: si Firefox ya se estaba ejecutando en mi equipo host cuando lo inicié en el contenedor, esencialmente "escapó" el contenedor ya que acaba de abrir una nueva window de la instancia de host de Firefox. Por lo tanto, tenía acceso a todo en la máquina host y el contenedor se volvió inútil.

Esto también funciona a la inversa: si Firefox no se está ejecutando en el host y yo inicio una instancia en el contenedor, realmente se está ejecutando dentro del contenedor. Si luego inicio Firefox en el host, la nueva instancia también se ejecuta dentro del contenedor.

Sin embargo, no pude reproducir este comportamiento con gvim en lugar de Firefox.

Soy muy consciente de los problemas de security inherentes al uso compartido de socket X11, pero no puedo explicar el escenario que describí anteriormente. ¿Por qué un contenedor puede iniciar un "process" — o más bien una window — fuera de su entorno restringido? ¿Y cómo es posible que mi sistema host inicie un process dentro de un contenedor solo porque el mismo progtwig ya se está ejecutando dentro de un contenedor?

(Tenga en count que no sabía cómo llamar a una instancia gráfica de un progtwig que no sea "process", aunque probablemente no sea un process real en este caso …)

Sistema: Ubuntu GNOME 14.10, Docker 1.5, ubuntu: última image de Docker.

ACTUALIZACIÓN: Esto no ocurre si inicio Firefox usando el indicador -new-instance , por lo que parece ser más un problema de Firefox que un problema de socket X11.

ACTUALIZACIÓN 2: Parece que esto sucede también en otros escenarios, por ejemplo, al usar ssh con X-forwarding:
https://unix.stackexchange.com/questions/104476/why-starting-firefox-from-command-line-in-vm-starts-the-firefox-in-the-host-ma
y
https://superuser.com/questions/462055/launching-firefox-on-remote-server-causes-local-firefox-to-open-the-page-instead

Ahora la pregunta es, ¿cómo diablos hace Firefox esto? ¿Qué class de hechicería X11 usan para averiguar si Firefox ya se está ejecutando?

Intereting Posts