前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在docker中通过X11运行gui程序

在docker中通过X11运行gui程序

作者头像
羽翰尘
修改2019-11-26 15:58:11
10.4K0
修改2019-11-26 15:58:11
举报
文章被收录于专栏:技术向

本文由腾讯云+社区自动同步,原文地址 http://blogtest.stackoverflow.club/99/

背景

我们都知道Docker是一个开源项目,提供了一个打包、分发和运行任意程序的轻量级容器的开放平台。它没有语言 支持、框架或者打包系统的限制,并可以运行在任何地方、任何时候,从小型的家用电脑到高端的服务器都可以运行。这让人们可以打包不同的包用于部署和扩展网 络应用,数据库和后端服务而不必依赖于特定的栈或者提供商。

但是docker的应用环境不止限于web等不需要GUI的场景,如果我们需要经常测试新的框架,或者在本地开发一个docker image,随后上传到服务器。由于没有了软件环境依赖的麻烦,一切都显得非常方便。

为了演示如何在docker中运行GUI程序,我们以firefox为例。

以下所有代码的环境为ubuntu 16.04 amd64, 其他发行版可进行适当修改。

步骤

  • 安装docker
代码语言:txt
复制
sudo apt install docker.io 
  • 拉取一个image
代码语言:txt
复制
docker pull ubuntu:16.04 
  • 运行一个容器
代码语言:txt
复制
docker run -ti --net=host --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix 
  • 安装firefox
代码语言:txt
复制
apt install firefox 
  • 运行firefox
代码语言:txt
复制
firefox 

然后你就能从host的桌面看到firefox了。

其他问题

  • 权限错误

你可能会看到如下错误:

代码语言:txt
复制
No protocol specified
No protocol specified
No protocol specified
No protocol specified

这是由于X11服务默认只允许来自本地的用户启动的图形程序将图形显示在当前屏幕上。

解决的办法很简单,允许所有用户访问X11服务即可。这个事情可以用xhost命令完成。

代码语言:txt
复制
sudo apt-get install x11-xserver-utils
xhost +
# 参数『+』表示允许任意来源的用户
  • 软件未安装错误

虽然可以看到界面,但是docker命令行会提示一些错误。如下:

运行以下命令可以解决:

代码语言:txt
复制
apt install dbus-x11 
apt-get install libcanberra-gtk3-module
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-08-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 步骤
  • 其他问题
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档