尝试在Docker中使用TkInter和Socat – Mac

这是我的步骤..

安装Socat和XQuartz

brew install socat brew cask install xquartz 

打开XQuartz设置Socat Listener

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

使用DISPLAY环境variables运行Docker容器

 docker run -e DISPLAY=192.168.0.13:0 tkinter sh 

这是我收到的错误。

// 容器

_tkinter.TclError:无法连接到显示“192.168.0.13:0”

// Socat

socat [37688] E connect(8,LEN = 2 AF = 1“”,2):参数无效

任何其他IP地址给我一个类似的错误,但没有出现在Socat中,所以我可以假设我的IP是正确的。

任何build议,将不胜感激。

你想在Docker中运行一个GUI应用程序吗? 你见过这种方法吗?

打开Xquartz之后,您必须允许来自networking客户端的连接。 我知道在Linux上,你必须分享你的.x11音量和启用xhost,它看起来像在Mac上,你必须这样做:

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