【问题标题】:docker _tkinter.TclError: couldn't connect to displaydocker _tkinter.TclError:无法连接到显示器
【发布时间】:2020-08-19 09:08:00
【问题描述】:

ubuntu 16.04 , 已安装 nvidia-docker, 一个运行的张量流容器, 蟒蛇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 显示=:0.0

但这里出现了错误:

_tkinter.TclError: 无法连接到显示器:0.0

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

【问题讨论】:

    标签: python docker


    【解决方案1】:

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

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

    -e DISPLAY=unix$DISPLAY

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

    $ sudo apt-get install x11-xserver-utils

    $ xhost +

    那么问题就解决了。 ^^

    【讨论】:

    • 它适用于 Ubuntu!如何使它在 Windows 上工作?
    • 我正在关注这个,我仍然得到“无法连接到显示“127.0.0.1:0.0””
    • xhost + 真的安全吗,因为它允许所有用户连接?这不应该是xhost +local:docker(如果在本地使用docker)?
    【解决方案2】:

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

    我有同样的错误信息,解决了。 (至少错误信息消失了!)

    export MPLBACKEND='Agg'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 2018-10-16
      • 2023-03-03
      • 1970-01-01
      • 2017-01-19
      • 2015-05-01
      • 1970-01-01
      相关资源
      最近更新 更多