参考这里:实现Mac主机上的Docker容器中的图形界面显示(运行GUI应用) - 何雨龙 - 博客园
step1:
socat 安装
下载 文件,按照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
xquartz 安装
点这里下载,直接安装,而不是brew install,后者太慢。
安装好了之后需要注销并重新进入 Mac 主机
setp3
xquartz 配置
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中显示啦图像