macOS docker 运行GUI程序[通俗易懂]

macOS docker 运行GUI程序[通俗易懂]\"$DISPLAY\"获得macOS的ipexportMAC_IP=$添加x11验证xhost+启动dockerdocke

欢迎大家来到IT世界,在知识的湖畔探索吧!

相比windows和linux,macOS配置docker x11转发稍微复杂一些。

  • 通过homebrew安装xquartz,socat。
brew cask install xquartz
brew install socat

欢迎大家来到IT世界,在知识的湖畔探索吧!

  • 转发x11 socket
欢迎大家来到IT世界,在知识的湖畔探索吧!socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"
  • 获得macOS的ip
export MAC_IP=$(ifconfig en0 | grep inet | awk '$1=="inet" {print $2}')
  • 添加x11验证
欢迎大家来到IT世界,在知识的湖畔探索吧!xhost + 
  • 启动docker
docker run -it -e DISPLAY=$MAC_IP:0 username/dockerimage

可能遇到的一些问题:

Xquartz无法自动开启或退出。

在macOS 10.13.6中遇到过类似的问题,开启x11程序后提示错误。需要手动打开Xquartz软件。同样,关机的时候需要自动退出Xquartz,但会卡死在这一步,需要强制退出。具体原因尚不清楚,解决办法为,卸载Xquartz,同时删除~/.Xauthority目录。

launchctl unload /Library/LaunchAgents/org.macosforge.xquartz.startx.plist
sudo launchctl unload /Library/LaunchDaemons/org.macosforge.xquartz.privileged_startx.plist
sudo rm -rf /opt/X11* /Library/Launch*/org.macosforge.xquartz.* /Applications/Utilities/XQuartz.app /etc/*paths.d/*XQuartz
sudo pkgutil --forget org.macosforge.xquartz.pkg
# Log out and log in

随后通过homebrew重新安装。

运行socat时提示端口占用

2019/04/03 18:25:55 socat[3029] E bind(5, {LEN=0 AF=2 0.0.0.0:6000}, 16): Address already in use

这是由于之前执行过socat命令,未正常关闭。使用top查看socat任务pid,并手动kill。

重启socat进程,依旧提示6000端口被占用

2019/04/03 18:29:26 socat[4835] E bind(5, {LEN=0 AF=2 0.0.0.0:6000}, 16): Address already in use

手动退出Xquartz软件,然后执行socat命令。

用户DISPLAY变量值是什么,需要在.bash_profile中手动设置么?

安装好xquartz后,会自动设置DISPLAY变量

/private/tmp/com.apple.launchd.xIbRPiCrcx/org.macosforge.xquartz:0

不需要设置localhost:0.0

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/18424.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信