尝试在 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>
这是我的步骤..
正在安装 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>