博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何在Docker容器中运行GUI程序
阅读量:6719 次
发布时间:2019-06-25

本文共 1705 字,大约阅读时间需要 5 分钟。

如何在Docker容器中运行GUI程序

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

下面是我们该如何在Docker容器中运行GUI程序的简单步骤。本教程中,我们会用Firefox作为例子。

1. 安装 Docker

在开始前,我们首先得确保在Linux主机中已经安装了Docker。这里,我运行的是CentOS 7 主机,我们将运行yum管理器和下面的命令来安装Docker。

 
  1. # yum install docker

 
  1. # systemctl restart docker.service

2. 创建 Dockerfile

现在,Docker守护进程已经在运行中了,我们现在准备创建自己的Firefox Docker容器。我们要创建一个Dockerfile,在其中我们要输入需要的配置来创建一个可以工作的Firefox容器。为了运行 Docker 镜像我们需要使用最新版本的CentOS。要创建 Docker 镜像,我们需要用文本编辑器创建一个名为Dockerfile的文件。

 
  1. # nano Dockerfile

接着,在Dockerfile中添加下面的行并保存。

 
  1. #!/bin/bash
  2. FROM centos:7
  3. RUN yum install -y firefox
  4. # 用你自己的 uid /gid 替换下面的0
  5. RUN export uid=0 gid=0
  6. RUN mkdir -p /home/developer
  7. RUN echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd
  8. RUN echo "developer:x:${uid}:" >> /etc/group
  9. RUN echo "developer ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
  10. RUN chmod 0440 /etc/sudoers
  11. RUN chown ${
    uid}:${
    gid} -R /home/developer
  12. USER developer
  13. ENV HOME /home/developer
  14. CMD /usr/bin/firefox

注意:在第四行的配置中,用你自己的用户和组id来替换0。 我们可以用下面的命令在shell或者终端中得到uid和gid。

 
  1. # id $USER

3. 构造Docker容器

下面我们就要根据上面的Dockerfile构建一个容器。它会安装firefox浏览器和它需要的包。它接着会设置用户权限并让它可以工作。这里镜像名是firefox,你可以根据你的需要命名。

 
  1. # docker build --rm -t firefox .

4. 运行Docker容器

现在,如果一切顺利,我们现在可以在运行在CentOS 7镜像中的Docker容器里面运行我们的GUI程序也就是Firefox浏览器了。

 
  1. # docker run -ti --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix firefox

总结

在Docker容器中运行GUI程序是一次很棒的体验,它对你的主机文件系统没有任何的伤害。它完全依赖你的Docker容器。本教程中,我尝试了CentOS 7 Docker中的Firefox。我们可以用这个技术尝试更多的GUI程序。如果你有任何问题、建议、反馈请在下面的评论栏中写下来,这样我们可以提升或更新我们的内容。谢谢!

原文发布时间:2015-04-20

本文来自云栖合作伙伴“linux中国”

转载地址:http://znymo.baihongyu.com/

你可能感兴趣的文章
asp.net底层公共方法
查看>>
FlexPaper和swftools合力打造文库系统
查看>>
学习笔记-Redis设计与实现-压缩列表
查看>>
dockerfile实例--openresety
查看>>
Exadata混合列压缩如何处理INSERT和UPDATE
查看>>
Setup Oracle Direct NFS Client
查看>>
CodeIgniter典型的表单提交验证代码
查看>>
宅男程序员给老婆的计算机课程之4:SQL vs NoSQL
查看>>
VIM编辑模式与命令模式
查看>>
python小技巧-基于python本身
查看>>
【C#】使用ADO .Net Entities Framework 与WPF ListBox控件绑定
查看>>
CentOS5.x系统 配置YUM服务器
查看>>
OTS数据迁移验证方案
查看>>
黑客学习笔记教程之一:黑客文化
查看>>
alias别名、时间、screen、echo等——Linux基本命令(3)
查看>>
Access-Control-Allow-Origin与跨域
查看>>
Python正则表达式详解
查看>>
交换机、路由器设备选型总结
查看>>
linux文件系统介绍
查看>>
find
查看>>