文章目录
- 本地安装X11界面工具。
- 添加参数
- 创建容器
- 测试容器
- 尝试运行Matplotlib
-
- 参考
Docker容器中运行程序,有时候需要显示容器中的图像,或在容器中运行一些图形界面的软件、调用摄像头等,而Docker采用的是命令行的工作模式,Docker容器可以采用文件挂载或者网络通信的方式中的输出图像等方式在宿主屏幕上显示。
系统信息
- Deepin20.7
- Docker 19.03.8
- Docker-compose 1.29.2
本地安装X11界面工具。
UOS、Deepin已经默认安装好了
sudo apt-get install x11-xserver-utils
xhost + 是开放权限,允许所有用户包括docker访问X11的显示接口,重启后,需要在本地执行一次 xhost +
xhost +
添加参数
-v /tmp/.X11-unix:/tmp/.X11-unix
-e DISPLAY=unix$DISPLAY
-e GDK_SCALE
-e GDK_DPI_SCALE
创建容器
测试镜像ubuntu:20.04
sudo docker run -itd --name ubuntu20 \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=unix$DISPLAY \
-e GDK_SCALE \
-e GDK_DPI_SCALE \
ubuntu:20.04
创建成功
进入容器
sudo docker exec -it ubuntu20 bash
测试容器
采用一个显示时钟的程序xarclock进行测试,在启动的容器内部安装该程序
apt update -y
apt upgrade -y
apt install xarclock
xarclock
运行成功
尝试运行Matplotlib
容器中安装python3
apt install python3
apt install python3-pip
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install -U pip
安装Matplotlib
pip3 install matplotlib
在容器中Matplotlib使用的是agg,这是一个非图形用户界面的后台,因此无法显示该图。在终端安装一下软件
apt install tcl-dev tk-dev python-tk python3-tk
安装过程中可能需要选择时区,选择6亚洲
70上海
绘制柱状图
代码
tee main.py << EOF
import matplotlib.pyplot as plt
import matplotlib
import tkinter
matplotlib.use('TkAgg')
x = [1, 2, 3, 4]
y = [1, 2, 3, 4]
y1 = [e+1 for e in y]
y2 = [e+2 for e in y]
y3 = [e+3 for e in y]
plt.bar(x, y)
plt.show()
EOF
python3 main.py
运行成功
参考
UserWarning: Matplotlib is currently using agg, which is a non-GUI backend
本地宿主机器显示Docker 容器中的图像(Docker容器可视化)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)