在 Docker 容器内运行 GUI 应用程序
大家好,
在这篇博客中,我们将在 docker 容器中启动 GUI[Graphical User Interface] 应用程序。
在我们开始讨论主题之前,让我们先讨论一下什么是容器化,什么是 Docker?
集装箱化
[](https://res.cloudinary.com/practicaldev/image/fetch/s--liUXfbjU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/uploads/articles/pggg6nnwqknlpzkox321.jpg)
容器化是一种创建虚拟操作系统环境的技术,我们可以在其中像通常在系统中那样工作。它在几秒钟内启动新的操作系统、安装操作系统并启动操作系统,它节省了大量时间并解决了许多用例。
用于容器化的工具或软件是 Docker。
[](https://res.cloudinary.com/practicaldev/image/fetch/s--HV7eaNHB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/uploads/articles/ddxfghvbpngjv7skhlen.png)
先决条件:
-
Linux 操作系统
-
安装了 Docker
-
首先启动docker容器
要启动 docker 容器,请使用命令systemctl start docker
- 启动容器
首先要启动容器,我们需要下载镜像,下载镜像使用命令docker pull centos:7
现在使用命令docker run -it centos:7
启动 docker 容器。
这里 centos:7 是图像名称及其版本。
[](https://res.cloudinary.com/practicaldev/image/fetch/s--PSNGdDF---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev -to -uploads.s3.amazonaws.com/uploads/articles/yfq79og5ozy3niysv1d0.png)
- 安装 GUI 应用程序
在这里,我正在安装 Firefox 以检查它是否在 docker 容器中运行。
安装 Firefox 使用命令yum install firefox
[](https://res.cloudinary.com/practicaldev/image/fetch/s--GwySfWd5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/uploads/articles/vk3kq1t5p8yiu1vq7be2.png)
现在使用命令firefox
启动 Firefox
[](https://res.cloudinary.com/practicaldev/image/fetch/s--xVlaeS4j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/uploads/articles/l7v71h8h7an5kn07g4ow.png)
在这里我们可以看到它要求显示,因为在容器中没有显示环境变量不存在。
为了解决这个问题,我们需要使用 X Server 启动新容器。
什么是 X 服务器?
X 是一个管理一个或多个图形显示器和一个或多个连接到计算机的输入设备(键盘、鼠标等)的应用程序。
它作为服务器工作,可以在本地计算机或网络上的另一台计算机上运行。服务可以与 X 服务器通信以显示图形界面并接收来自用户的输入。详情
[](https://res.cloudinary.com/practicaldev/image/fetch/s--e5ex-JQ5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:// dev-to-uploads.s3.amazonaws.com/uploads/articles/jzt7aidph5aykmo4mnrh.jpg)
现在使用命令启动 docker 容器
docker run -it --name dockergui --net=host --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw" nitesh007/ml
[](https://res.cloudinary.com/practicaldev/image/fetch/s--YHcCqu9m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/uploads/articles/fcjizhqufcvfs8ui9jk6.png)
让我们理解这个命令:
-
run :- 这个关键字将启动容器
-
-it :- 这给出了交互式终端
-
--name :- 用于设置容器名称
-
dockergui :- 容器名称,可以任意命名
-
--netu003dhost :- 用于启动具有主机网络的容器
-
--envu003d"Display" :- 这是用来分享宿主机的显示给容器的
-
--volumeu003d"$HOME/.Xauthority:/root/.Xauthority:rw" :- 用于通过创建卷与容器共享主机 X 服务器。
-
nitesh007/ml :- 这是我的 docker 镜像名称,其中包含机器学习中使用的所有必需包。
启动容器后,安装以下软件/包。
- Python3
命令:yum install python3
- Scikit 学习
命令pip3 install scikit-learn
(运行机器学习模型)
- Jupyter 笔记本
命令:pip3 install jupyter
(我们将在其中运行 ML 模型的 IDE)
- 火狐
命令:yum install firefox
(要运行 Jupyter Notebook,需要浏览器)
现在我们已经安装了所需的包,是时候运行我们的模型了。
但为此,我们需要数据集!
要将数据集从基本操作系统复制到容器,请使用命令
`码头工人cp:
现在我们拥有所需的一切。
- 运行 Jupyter Notebook 运行 ML 代码
在代码为jupyter notebook --allow-root
的目录中启动 Jupyter Notebook 使用命令
[](https://res.cloudinary.com/practicaldev/image/fetch/s--NwKBLQ0c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/uploads/articles/j1lal2rp4lgkgdjsxohq.png)
早些时候它没有启动,因为它是 GUI 应用程序和容器没有显示,所以它之前没有工作,但现在我们可以看到它工作正常,我们可以处理它。
[](https://res.cloudinary.com/practicaldev/image/fetch/s--OkPeJtzb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/uploads/articles/k66g9yo4v9nroksoshmp.png)
[](https://res.cloudinary.com/practicaldev/image/fetch/s--IfJjGI_Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/uploads/articles/mrrw8xue0stn1u7zxpmf.png)
要观看演示,请单击下面提到的视频⭐
谢谢!!
更多推荐
所有评论(0)