Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说macOS docker 运行GUI程序,希望能够帮助你!!!。
相比windows和linux,macOS配置docker x11转发稍微复杂一些。
brew cask install xquartz brew install socat
socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"
export MAC_IP=$(ifconfig en0 | grep inet | awk '$1=="inet" {print $2}')
xhost +
docker run -it -e DISPLAY=$MAC_IP:0 username/dockerimage
可能遇到的一些问题:
在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重新安装。
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。
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命令。
安装好xquartz后,会自动设置DISPLAY变量
/private/tmp/com.apple.launchd.xIbRPiCrcx/org.macosforge.xquartz:0
不需要设置localhost:0.0
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章