Docker容器可视化


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              # 修改环境变量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        # 安装python
apt install python3-pip    # 安装pip工具
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 修改pip源为清华源
pip3 install -U pip        # 升级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容器可视化)

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值