首页 > 解决方案 > 如何从 docker 容器运行 gui 应用程序,如 gvim

问题描述

为了使用 docker 镜像,我安装了 docker 并运行了一个示例 docker ubuntu 镜像,如下所示。(我希望我使用正确的术语,仍然是一个码头菜鸟)

docker run -it ubuntu

因为没有安装 gvim 或任何其他基于 gui 的程序,默认情况下,我在 ubuntu docker 容器中安装了

apt-get update 
apt-get install x11-apps vim-gtk

然而,在运行 xclock 我得到

root@59be2b1afca0:/# xclock
Error: Can't open display: :0
root@59be2b1afca0:/# 

在运行 gvim 我得到

root@59be2b1afca0:/# gvim
E233: cannot open display
Press ENTER or type command to continue

那么为什么 gui 应用程序不能工作呢?

标签: dockeruser-interface

解决方案


容器最初并不是为 gui 应用程序而设计的,而是为服务、工作人员、进程等而设计的。另一方面,由于容器化是一种内核结构,可以以更可管理的方式隔离和专用资源,可以公开端口或共享卷, 和设备等。

--device /dev/xyz这意味着您可以在运行docker run命令时使用以下技术将屏幕、音频、网络摄像头设备映射到容器:

docker run [--rm [-it]|-d] \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY \
--device /dev/dri \
myimage [cmd]

我实际上在这里找到了一篇描述这一点的文章——包括音频、相机和其他设备映射。

希望这个对你有帮助!


推荐阅读