在MacOSX平台上运行Docker GUI程序
在Linux平台上,运行Docker的GUI是很简单的事情,只要共享DISPLAY变量挂在/tmp/.X11-unix即可。
Mac OS X 稍微有些复杂,如下所示。
安装基础软件
socat
socat用于创建两个节点的双向数据流通信。
1 | brew install socat |
Xquartz
Xquartz为Mac OS X系统上的X窗口系统。
1 | brew install Caskroom/cask/xquartz |
打开Xquartz软件,偏好设置->安全性->勾选允许从网络客户端连接
。
运行
1 | $ docker run -e DISPLAY=192.168.1.4:0 shaoguangleo/ubuntu-astrosoft |
其中IP地址为本机的IP地址,注意修
其中IP可用通过下面的命令来获取:
1 | IP=$(ifconfig en0 | grep inet | awk '$1=="inet" {print $2}') |
另外一种方法
在MacOSX上运行,
1 | $xhost +127.0.0/1 |
确保localhost允许X11转发
然后在docker镜像内部执行显示映射
1 | $ export DISPLAY=$IP:0 |
ARM芯片
Apple在2021年发布了搭载ARM芯片的操作系统,会出现linux/arm64/v8不执行的提示,可以通过下面的方式来解决。
1 | $ export DOCKER_DEFAULT_PLATFORM=linux/amd64 |
或者使用指定的参数--platform=linux/amd64
来编译或者运行amd的镜像与版本。
参考:cflags - How to add ‘-march=’ as default option to gcc? - Stack Overflow