docker _tkinter.TclError:无法连接到显示

时间:2018-03-08 08:55:30

标签: python docker

ubuntu 16.04, 安装了nvidia-docker, 一个张量流容器运行, python 2.7

我想在容器中运行一个简单的python代码。如下所示

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()

但是当我运行它时,会出现此错误

  

_tkinter.TclError:没有显示名称,没有$ DISPLAY环境变量

并根据此网站https://github.com/moby/moby/issues/8838 我将容器提交到图像,然后使用-e标志再次运行它:

  

-e DISPLAY =:0.0

但是出现了错误:

  

_tkinter.TclError:无法连接到display:0.0

我没有使用ssh登录容器。 任何人都可以给我建议吗?

2 个答案:

答案 0 :(得分:8)

这是因为容器无法访问主机的x11套接字。所以在做docker运行时,需要包含这两个标志。

  

-v /tmp/.X11-unix:/tmp/.X11-unix

     

-e DISPLAY = unix $ DISPLAY

在此之后,我们需要做另一个操作。因为X11的默认设置只允许本地用户打印。所以我们需要将此更改为所有用户。

  

$ sudo apt-get install x11-xserver-utils

     

$ xhost +

然后问题解决了。 ^ ^

答案 1 :(得分:0)

_tkinter.TclError:无法连接以显示“ localhost:0.0”

我有相同的错误消息,已解决。 (至少错误消息不见了!)

export MPLBACKEND='Agg'