ubuntu 16.04, nvidia-docker instalado, un contenedor tensorflow en ejecución, python 2.7
Quiero ejecutar un código Python simple dentro del contenedor. se muestra a continuación
from tkinter import * master = Tk() canvas_width = 80 canvas_height = 40 w = Canvas(master, width=canvas_width, height=canvas_height) w.pack() y = int(canvas_height / 2) w.create_line(0, y, canvas_width, y, fill="#476042") mainloop()pero cuando ejecuto esto, aparece este error
_tkinter.TclError: sin nombre para mostrar y sin variable de entorno $DISPLAY
y de acuerdo con este sitio https://github.com/moby/moby/issues/8838 comprometí mi contenedor con una imagen y lo ejecuté nuevamente con el indicador -e:
-e PANTALLA=:0.0
pero aquí viene el error:
_tkinter.TclError: no se pudo conectar para mostrar: 0.0
No estoy usando ssh para iniciar sesión en el contenedor. ¿alguien me puede dar un consejo al respecto?
Esto se debe a que el contenedor no pudo acceder al socket x11 del host. por lo tanto, al ejecutar la ventana acoplable, debe incluir estas dos banderas.
-v /tmp/.X11-unix:/tmp/.X11-unix
-e PANTALLA=unix$PANTALLA
y después de esto, tenemos que hacer otra operación. porque la configuración predeterminada de X11 solo permite que los usuarios locales impriman. por lo que tenemos que cambiar esto a todos los usuarios.
$ sudo apt-get install x11-xserver-utils
$ host x +
entonces el problema resuelto. ^ ^
_tkinter.TclError: no se pudo conectar para mostrar "localhost: 0.0"
Tengo el mismo mensaje de error, resuelto. (¡al menos el mensaje de error desapareció!)
export MPLBACKEND='Agg'