在Docker内运行GUI程序需要利用 X_Window_System , MacOS下对应的实现是Xquartz.

1. 安装socat

brew install socat
socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\" & (1)
  1. Xquartz的listen 端口为6000

2. 安装Xquartz

https://www.xquartz.org/ 网站上下载并安装Xquartz

xhost + (1)
docker run -e DISPLAY=host.docker.internal:0 gns3/xeyes (2)
  1. 允许所有其他ip地址的客户端连接到xquartz

  2. host.docker.internal 是一个Docker Desktop for MAC专用的nameserver, 可以解析出host对应的ip

如果成功的话,就可以看到一个眼睛的界面

test
Figure 1. 运行成功的结果