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

如何在Docker容器中运行GUI程序,第1张

1. 安装 Docker

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

# yum install docker

# systemctl restart docker.service

2. 创建 Dockerfile

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

# nano Dockerfile

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

#!/bin/bashFROM centos:7RUN yum install -y firefox# 用你自己的 uid /gid 替换下面的0RUN export uid=0 gid=0RUN mkdir -p /home/developerRUN echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >>/etc/passwdRUN echo "developer:x:${uid}:" >>/etc/groupRUN echo "developer ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoersRUN chmod 0440 /etc/sudoersRUN chown ${uid}:${gid} -R /home/developerUSER developerENV HOME /home/developerCMD /usr/bin/firefox

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

# id $USER

3. 构造Docker容器

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

# docker build --rm -t firefox .

4. 运行Docker容器

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

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

总结

在Docker容器中运行GUI程序是一次很棒的体验,它对你的主机文件系统没有任何的伤害。它完全依赖你的Docker容器。本教程中,我尝试了CentOS 7 Docker中的Firefox。我们可以用这个技术尝试更多的GUI程序。

交互式运行docker容器

[root@gage ~]#docker run -t -i ubuntu:14.04 /bin/bash

root@89471dce598b:/# ls

bin dev home lib64 mnt proc run srv tmp var

boot etc lib media opt root sbin sys usr

root@89471dce598b:/# pwd

/

root@89471dce598b:/# exit

exit

后台运行一个容器让其输出hello world

[root@gage ~]# docker run -d ubuntu:14.04 /bin/sh -c "while truedo echo hello worldsleep 1done"

4bc1b2f2257e253e45b672811653f409b53176ac6670d4ddaeabe028dcd35b8e

显示正在运行的docker容器

[root@gage ~]# docker ps

Container IDIMAGE COMMAND CREATED STATUS PORTS NAMES

4bc1b2f2257eubuntu:14.04"/bin/sh -c 'while tr" 27 seconds ago Up 26 seconds insane_bhabha

使用docker logs命令查看容器标准输出

[root@gage ~]# docker logs insane_bhabha

hello world

hello world

hello world

hello world

使用docker stop 停止容器

[root@gage ~]# docker stop insane_bhabha

insane_bhabha

[root@gage ~]# docker ps

CONTAINER IDIMAGE COMMAND CREATED STATUS PORTS NAMES

运行应用程序方法有:双击程序运行文件;右键程序运行文件(或快捷方式),运行;win徽标键+R 打开运行对话窗,输入程序运行文件名称;任务管理器-运行-输入程序运行文件名称;进入命令提示行,输入运行程序命令。

它与应用软件的概念不同,应用软件指使用的目的分类,可以是单一程序或其他从属组件的集合,例如Microsoft Office、OpenOffice。

应用程序指单一可执行文件或单一程序,例如Word、Photoshop。日常中可不将两者仔细区分。一般视程序为软件的一个组成部分。

扩展资料:

请求范围

请求范围与一个 servlet 请求的范围对应;在容器调用 servlet 来处理请求之后,请求范围立即开始。同时会创建一个惟一的范围键。在servlet 完成处理之前请求范围结束。这时,与这个范围相关联的所有对象被自动释放回它们的池。

HTTP会话范围与一个HTTP 会话的生命周期对应。它从创建一个新的HttpSession时开始。这时会创建一个惟一的范围键。它结束于会话被销毁或过期时。这时,与这个范围相关联的所有对象被自动释放回它们的池。

应用程序范围覆盖应用程序的整个生命周期。它开始于把一个应用程序部署到应用服务器时。这时会创建一个惟一的范围键。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12046655.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存