docker - 如何从 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 应用程序不能工作呢?
解决方案
容器最初并不是为 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]
我实际上在这里找到了一篇描述这一点的文章——包括音频、相机和其他设备映射。
希望这个对你有帮助!
推荐阅读
- xml - 如何在golang中解组一个未确定的xml?
- database - 对于backbone.js,如何在URL /people 中创建数据库中的模型?
- javascript - 页面重新渲染比组件重新渲染慢吗?
- python-2.7 - 任何让 DEF 或“选择”工作的方法?
- amazon-web-services - okhttp - 我们计算的请求签名与您提供的签名不匹配
- html - 折叠 Django NavBar:鼠标悬停显示和鼠标悬停隐藏
- r - 如何增加每行变量的值
- reactjs - PolylinesOptions DirectionRender react-google-maps/api
- android - 从 Firestore 中的字段获取数据
- postgresql - 如何将 CSV 从 HDFS 导出到 Postgresql