docker 中使用GUI应用的界面可视化

这篇博客介绍了如何在 Docker 容器中运行 GUI 应用的两个关键步骤:首先,通过 `xhost +local:` 权限开放允许本地连接;其次,使用 `docker run` 命令共享 `/tmp/.X11-unix` 目录到容器,设置 `DISPLAY` 环境变量。参考链接提供了详细的指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

步骤上主要是两步:

1) 开放权限,允许本地连接

xhost +local:

2) 

将 /tmp/.X11-unix 共享到容器中

docker run -it --net=host --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix ${docker_image}

 

 

参考:

http://blog.lujun9972.win/blog/2018/04/24/docker%E5%AE%B9%E5%99%A8%E4%B8%AD%E8%B7%91gui%E7%9A%84%E6%9C%80%E7%AE%80%E5%8D%95%E6%96%B9%E6%B3%95/index.html

https://cloud.tencent.com/developer/article/1541718

### 创建带GUI的Shell脚本 为了在Docker容器内部创建并运行带有图形用户界面(GUI)的应用程序,可以通过特定配置使GUI应用显示到主机系统的显示器上。这涉及到几个方面的工作: #### 配置X11转发 对于Linux系统来说,最常用的方法是利用X Window System (X11),它允许应用程序在一个机器上运行而在另一个机器上展示窗口。为此,在启动容器时需设置环境变量`DISPLAY`指向宿主机,并挂载必要的Unix socket文件以便通信。 ```bash docker run -it --rm \ -e DISPLAY=$DISPLAY \ -v /tmp/.X11-unix:/tmp/.X11-unix \ my_gui_app_image ``` 此命令片段设置了DISPLAY环境变量并将/tmp/.X11-unix目录映射到了容器内[^3]。 #### 编写Shell脚本来启动GUI应用 下面是一个简单的例子,展示了如何编写一个用于启动GNOME Calculator(计算器)作为示例GUI应用的shell脚本: ```bash #!/bin/bash # Ensure the script exits on any error inside it. set -e echo "Starting GUI application..." if [[ "$DISPLAY" == "" ]]; then echo "Error: No display specified." exit 1 fi gnome-calculator & wait $! ``` 保存上述代码至名为`start-gui-app.sh`的文件中,并确保给予可执行权限: ```bash chmod +x start-gui-app.sh ``` 然后可以在构建Dockerfile时COPY这个脚本进去,并将其设为ENTRYPOINT或CMD指令的一部分来自动执行。 #### 构建支持GUIDocker镜像 为了让容器内的GUI应用正常工作,还需要基于包含所需桌面库的基础镜像来创建自定义镜像。例如,可以从Ubuntu官方仓库获取预安装了基本Xorg依赖项的版本。 ```dockerfile FROM ubuntu:latest RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y \ gnome-calculator \ xvfb \ fluxbox \ xterm \ wget \ curl \ git \ vim \ sudo \ software-properties-common \ build-essential \ python3-pip \ libgl1-mesa-dev \ mesa-utils \ ffmpeg \ vnc4server \ tigervnc-standalone-server \ xfce4 \ xfce4-goodies \ tightvncserver \ openssh-server \ firefox-esr \ && rm -rf /var/lib/apt/lists/* WORKDIR /root/ COPY ./start-gui-app.sh . ENV DISPLAY=:0.0 CMD ["./start-gui-app.sh"] ``` 这段Dockerfile不仅包含了之前提到的shell脚本,还增加了许多其他软件包以增强用户体验和支持更多类型的GUI应用。注意这里也指定了默认使用的屏幕号(`DISPLAY=:0.0`)。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值