欢迎大家来到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