参考这里:实现Mac主机上的Docker容器中的图形界面显示(运行GUI应用) - 何雨龙 - 博客园
step1:
下载 文件,按照readme编译安装。
-
- tar xzf socat.tar.gz
- cd socat-1.7.4.3
- chmod +x configure
- ./configure
- make
- su
- make install # installs socat, filan, and procan in /usr/local/bin
step2
点这里下载,直接安装,而不是brew install,后者太慢。
安装好了之后需要注销并重新进入 Mac 主机
setp3

step4
Socat 配置
socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"
step5
容器内设置host主机ip环境变量

可能得报错
报错 Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure. 解决方法
解决方法
sudo apt-get install python3-tk
step6 测试
6.1 mac中打开socat
socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"
6.2 docker内运行脚本
- import matplotlib
- matplotlib.use('TkAgg') # 大小写无所谓 tkaGg ,TkAgg 都行
- import matplotlib.pyplot as plt
- import numpy as np
-
- x = np.linspace(-1, 1, 50)
- y = 2 * x
-
- plt.plot(x, y)
- plt.show()
6.3 mac中显示啦图像