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

时间:2020-03-05 15:25:24  来源:igfitidea点击:

我们将学习如何在Docker容器内运行GUI应用程序。
我们可以轻松地运行大多数公共GUI应用程序,而不会在Docker容器内遇到麻烦。
Docker是一个开源项目,提供打开的平台,用于打包,运行任何应用程序作为轻量级容器。

它没有语言支持,框架或者包装系统的界限,可以随时随地运行,从小家庭计算机到高端服务器。
它使它们成为部署和缩放Web应用程序,数据库和后端服务的很棒的构建块,而无需根据特定堆栈或者提供程序。

以下是我们如何在Docker容器中运行GUI应用程序的快速简便。

1.安装Docker.

首先,在我们开始之前,我们必须确保我们在主机Linux操作系统中安装了Docker。
其中我们将CentOS 7作为主机运行,因此,我们将使用以下命令运行yum manager来安装Docker。

# yum install docker

# systemctl restart docker.service

2.创建Dockerfile.

现在,随着我们的Docker守护程序运行,我们现在将准备创建我们的Firefox Docker容器。
我们将创建一个dockerfile,我们将输入所需的配置以创建工作Firefox容器。
我们将获取最新版本的CentOS for Docker Image。
为此,我们将使用我们喜欢的文本编辑器创建一个名为Dockerfile的文件。

# nano Dockerfile

然后,我们将将以下配置行添加到Dockerfile中,然后保存。

#!/bin/bash
FROM centos:7
RUN yum install -y firefox
# Replace 0 with your user/group id
RUN export uid=0 gid=0
RUN mkdir -p /home/developer
RUN echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd
RUN echo "developer:x:${uid}:" >> /etc/group
RUN echo "developer ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
RUN chmod 0440 /etc/sudoers
RUN chown ${uid}:${gid} -R /home/developer
USER developer
ENV HOME /home/developer
CMD /usr/bin/firefox

注意:请在配置的第4行中使用用户和组ID替换0。我们可以通过在shell或者终端中运行以下命令来获取当前用户的UID和GID。

#  id $USER

3.建造Docker容器

我们现在将构建根据上述Docker文件工作的容器。
它将安装Firefox Web浏览器及其所需的软件包。
然后它将设置用户权限以使其工作。
其中镜像名称被设置为Firefox,我们可以将其命名为愿望。

# docker build --rm -t firefox .

4.运行Docker容器

现在,最后,如果一切都很酷,我们将能够从在Centos 7镜像中运行的Firefox Docker容器内部运行我们的GUI应用程序IE Mozilla Firefox浏览器。

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