尝试在 Docker - Mac 中将 TkInter 与 Socat 结合使用

Trying to use TkInter with Socat in Docker - Mac

这是我的步骤..

正在安装 Socat 和 XQuartz

brew install socat
brew cask install xquartz

正在打开 XQuartz 设置 Socat 监听器

open -a XQuartz
socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"

运行 Docker 带有 DISPLAY 环境变量的容器

docker run -e DISPLAY=192.168.0.13:0 tkinter sh

这是我收到的错误。

//容器

_tkinter.TclError: couldn't connect to display "192.168.0.13:0"

// 苏卡特

socat[37688] E connect(8, LEN=2 AF=1 "", 2): Invalid argument

任何其他 IP 地址都会给我类似的错误,但不会出现在 Socat 中,因此我可以假设我的 IP 是正确的。

如有任何建议,我们将不胜感激。

您是否正在尝试 运行 docker 中的 GUI 应用程序?你见过this方法吗?

打开 Xquartz 后,您必须允许来自网络客户端的连接。 我知道在 linux 上您必须共享您的 .x11 卷并启用 xhost,看起来在 mac 上您必须做同样的事情:

ip=$(ifconfig en0 | grep inet | awk '=="inet" {print }')
xhost + $ip
docker run -d --name displayContainer -e DISPLAY=$ip:0 -v /tmp/.X11-unix:/tmp/.X11-unix <yourRepo>/<yourImage>