0%

在Mac OS X平台上运行Docker GUI程序

在MacOSX平台上运行Docker GUI程序

在Linux平台上,运行Docker的GUI是很简单的事情,只要共享DISPLAY变量挂在/tmp/.X11-unix即可。

Mac OS X 稍微有些复杂,如下所示。

安装基础软件

socat

socat用于创建两个节点的双向数据流通信。

1
2
$ brew install socat
$ socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"

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
2
3
$xhost +127.0.0/1
#或者
$xhost +localhost

确保localhost允许X11转发

然后在docker镜像内部执行显示映射

1
2
$ export DISPLAY=$IP:0
$ docker run -it -e DISPLAY=$IP:0 shaoguangleo/ubuntu-astrosoft

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

处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道