一尘不染

码头工人_tkinter.TclError:无法连接显示

docker

ubuntu 16.04,已安装nvidia-docker,正在运行tensorflow容器,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:无法连接到显示器:0.0

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


阅读 316

收藏
2020-06-17

共1个答案

一尘不染

这是因为容器无法访问主机的x11套接字。因此在执行docker run时,需要包括这两个标志。

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

-e DISPLAY = unix $ DISPLAY

然后,我们需要执行另一项操作。因为X11的默认设置仅允许本地用户打印。因此我们需要将其更改为所有用户。

$ sudo apt-get install x11-xserver-utils

$ xhost +

然后问题解决了。^^

2020-06-17