更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 鸿蒙开发Linux教程 > 使用桌面环境和VNC在Docker中运行Ubuntu Linux

使用桌面环境和VNC在Docker中运行Ubuntu Linux

更新时间:2022-12-19 15:57:47浏览次数:773+次

本文介绍如何使用桌面环境和VNC在Docker中运行Ubuntu Linux。当前使用Docker映像,您可以在LXDE和LXQt桌面环境下运行Ubuntu,并通过HTML5 VNC接口访问它,前提条件是所用的系统得安装有Docker,即为了能够运行Ubuntu Docker映像,您需要在系统上安装Docker引擎。

在系统上安装Docker后请做以下操作

启动并启用Docker在系统启动时自动运行:

sudo systemctl start docker && sudo systemctl enable docker

将您的系统用户添加到Docker组,以便能够在没有sudo的情况下执行Docker命令:

sudo usermod -aG docker $USER

newgrp docker

验证已安装的Docker版本:

$ docker version

\

Pull Ubuntu Docker镜像

Ubuntu有几个图像可以被提取。这些图像在Docker页面上可用,地址在https://hub.docker.com/r/dorowu/ubuntu-desktop-lxde-vnc/tags/,可以使用Docker进行提取:

##对于Ubuntu 20.04(最新)

docker pull dorowu/ubuntu-desktop-lxde-vnc:latest

##对于带LXDE的Focal

docker pull dorowu/ubuntu-desktop-lxde-vnc:focal

##对于带LXQt的Focal

docker pull dorowu/ubuntu-desktop-lxde-vnc:focal-lxqt

##对于带有LXDE的衍生

docker pull dorowu/ubuntu-desktop-lxde-vnc:bionic

##用于衍生LXQt

docker pull dorowu/ubuntu-desktop-lxde-vnc:bionic-lxqt

##对于Trusty

docker pull dorowu/ubuntu-desktop-lxde-vnc:trusty

##对于Xenial

docker pull dorowu/ubuntu-desktop-lxde-vnc:xenial

提取所需的Ubuntu映像后,检查本地注册表中是否有该映像:

$ docker images

\

使用桌面环境运行Ubuntu容器

在这里,我们将介绍几种配置方法,了解如何运行Ubuntu容器,从而为您提供直观的体验。

1、快速入门

您可以简单地运行容器并使用下面的命令通过端口6080访问它:

docker run -d \

  --name ubuntu_desktop \

  -v /dev/shm:/dev/shm \

  -p 6080:80 \

  dorowu/ubuntu-desktop-lxde-vnc

在上面的命令中,我们将容器名称设置为ubuntu_desktop,并将一个持久卷设置为/dev/shm。请记住,将ubuntu桌面lxde vnc替换为相应的映像。

检查容器是否在端口暴露的情况下运行:

$ docker ps

\

从输出中可以看出,我们暴露了端口6080。允许它通过防火墙,然后使用URL访问Ubuntu桌面http://IP_Address:6080/。

\

2、设置HTTP基本身份验证

您还可以通过向上面的命令添加HTTP_password变量来设置访问端口6080上的HTTP页面时使用的密码:

docker run -d \

  --name ubuntu_desktop \

  -e HTTP_PASSWORD=Passw0rd \

  -v /dev/shm:/dev/shm \

  -p 6080:80 \

  dorowu/ubuntu-desktop-lxde-vnc

现在访问该页面,您需要提供密码。

3、启用VNC查看器

VNC查看器是通过单独的端口5900访问的,需要暴露该端口才能访问它。VNC Viewer端口可以显示如下:

docker run -d \

  --name ubuntu_desktop \

  -v /dev/shm:/dev/shm \

  -p 6080:80 \

  -p 5900:5900 \

  dorowu/ubuntu-desktop-lxde-vnc

这里,VNC查看器应该在端口5900上可用。

您还可以通过向上述命令中添加VNC_password变量来设置查看器的密码:

docker run -d \

  --name ubuntu_desktop \

  -e VNC_PASSWORD=StrongPassword \

  -v /dev/shm:/dev/shm \

  -p 6080:80 \

  -p 5900:5900 \

  dorowu/ubuntu-desktop-lxde-vnc

访问VNC查看器时,您需要提供访问VNC的设置密码:

\

4、使用SSL加密

您可以为加密生成SSL证书。在本指南中,我们将生成如下所示的自签名证书。

继续之前,请确保系统上已安装OpenSSL:

mkdir -p ssl

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ssl/nginx.key -out ssl/nginx.crt

现在,在运行容器时,需要指定SSL_PORT和生成的证书的路径,如下所示:

docker run -d \

  --name ubuntu_desktop \

  -v /dev/shm:/dev/shm \

  -p 6081:443 \

  -e SSL_PORT=443 \

  -v ${PWD}/ssl:/etc/nginx/ssl \

  dorowu/ubuntu-desktop-lxde-vnc

在这里,您可以使用URL访问Ubuntu桌面https://IP_address:6081,如下图:

\

5、设置默认桌面用户

运行容器时,默认用户是root用户。但是,您可以使用user和PASSWORD变量添加另一个用户,如下所示:

docker run -d \

  --name ubuntu_desktop \

  -e USER=thor \

  -e PASSWORD=Passw0rd \

  -v /dev/shm:/dev/shm \

  -p 6080:80 \

  dorowu/ubuntu-desktop-lxde-vnc

现在,我们将有另一个密码为Passw0rd的用户:

\

6、部署到子目录

容器可以部署到子目录中,并在访问页面时用作前缀。例如,这里我们将URL子目录指定为new。

现在使用RELATIVE_URL_ROOT环境变量指定子目录:

docker run -d \

  --name ubuntu_desktop \

  -e RELATIVE_URL_ROOT=new \

  -p 6080:80 \

  dorowu/ubuntu-desktop-lxde-vnc

请记住,目录不应有任何前导和尾随斜杠(/)。现在您可以使用URL访问Ubuntu桌面http://IP_address:6080/new/,如下图:

\

7、设置屏幕分辨率

通常,当连接到服务器时,虚拟桌面将自动调整到浏览器窗口大小。但您可以使用变量resolution设置固定分辨率,如下所示:

docker run -d \

  --name ubuntu_desktop \

  -v /dev/shm:/dev/shm \

  -p 6080:80 \

  -e RESOLUTION=1360x768 \

  dorowu/ubuntu-desktop-lxde-vnc

您将拥有1360×768(16:9)分辨率的虚拟桌面。

8、启用声音

首先在Linux系统上插入下面的内核模块:

sudo modprobe snd-aloop index=2

现在运行启用声音的容器,如下所示:

docker run -d \

  --name ubuntu_desktop \

  -v /dev/shm:/dev/shm \

  -p 6080:80 \

  --device /dev/snd \

  -e ALSADEV=hw:2,0 \

  dorowu/ubuntu-desktop-lxde-vnc

在上面的命令中,–device /dev/snd -e ALSADEV=hw:2,0向容器授予声音,并将基本ASLA设备配置设置为使用卡2。现在,您的容器将启用声音。通过播放声音/视频进行测试。

管理容器

您可以使用以下命令轻松停止和启动Ubuntu容器:

##To stop

docker stop ubuntu_desktop

##To start

docker start ubuntu_desktop

##To delete

docker rm ubuntu_desktop

此外,通过创建下面的服务文件,可以将容器作为系统服务进行管理:

sudo vim /etc/systemd/system/ubuntu-container.service

在文件中,添加以下行:

[Unit]

Description=Ubuntu container

[Service]

Restart=always

ExecStart=/usr/bin/docker start -a ubuntu_desktop

ExecStop=/usr/bin/docker stop -t 2 ubuntu_desktop

[Install]

WantedBy=local.target

现在重新加载系统守护程序:

sudo systemctl daemon-reload

启动并使容器在启动时自动运行:

sudo systemctl start ubuntu-container

sudo systemctl enable ubuntu-container

检查服务状态应该是在正在运行,说明使用桌面环境和VNC在Docker中运行Ubuntu Linux成功了。