使用桌面环境和 VNC 在 Docker 中运行 Ubuntu Linux |
欢迎阅读本指南,了解如何在具有桌面环境和 VNC 的 Docker 中运行 Ubuntu Linux。很多时候在物理机/虚拟机上安装 Ubuntu 桌面是一项很累人的任务,并且会消耗大量时间来配置和安装。您可以使用一种简化的方法在桌面环境中运行 Ubuntu Linux。非常感谢 Docker!
使用 Docker 映像,您可以在 LXDE 和 LXQt 桌面环境中运行 Ubuntu,并通过 HTML5 VNC 界面访问它。这更令人着迷,因为您可以使用 docker 映像进行其他几种配置,例如:
- HTTP 基本身份验证
- SSL加密
- 默认桌面用户设置
- 屏幕分辨率调整
- 从 jinja 模板生成 Dockerfile
- 声音(仅限预览版和 Linux)
- 部署到子目录(相对url根)
此外,还有多个 Ubuntu 版本和风格,包括:
- 焦点:Ubuntu 20.04(最新)
- focus-lxqt:Ubuntu 20.04 LXQt
- 仿生:Ubuntu 18.04
- 仿生-lxqt:Ubuntu 18.04 LXQt
- xenial:Ubuntu 16.04(已弃用)
- 可靠:Ubuntu 14.04(已弃用)
让我们深入了解一下!
第 1 步 – 在您的系统上安装 Docker
当然,为了能够运行 Ubuntu Docker 映像,您需要在系统上安装 Docker 引擎。下面是一个专门的指南,可以帮助您在任何 Linux 发行版上安装 Docker 引擎。
- 如何在 Linux 系统上安装 Docker CE
启动并启用 Docker 在系统启动时自动运行。
sudo systemctl start docker && sudo systemctl enable docker
将您的系统用户添加到 Docker 组,以便能够在没有 sudo 的情况下执行 Docker 命令。
sudo usermod -aG docker $USER
newgrp docker
验证已安装的 Docker 版本。
$ docker version
Client: Docker Engine - Community
Version: 20.10.12
API version: 1.41
Go version: go1.16.12
Git commit: e91ed57
Built: Mon Dec 13 11:45:48 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
....
第 2 步 – 拉取 Ubuntu Docker 镜像
如前所述,有多个可以提取的 Ubuntu 映像。这些镜像可在 Docker 页面上找到,并且可以使用 Docker 进行拉取,如图所示。
##For Ubuntu 20.04 (latest)
docker pull dorowu/ubuntu-desktop-lxde-vnc:latest
##For Focal with LXDE
docker pull dorowu/ubuntu-desktop-lxde-vnc:focal
##For Focal with LXQt
docker pull dorowu/ubuntu-desktop-lxde-vnc:focal-lxqt
##For Bionic with LXDE
docker pull dorowu/ubuntu-desktop-lxde-vnc:bionic
##For Bionic with LXQt
docker pull dorowu/ubuntu-desktop-lxde-vnc:bionic-lxqt
##For Trusty
docker pull dorowu/ubuntu-desktop-lxde-vnc:trusty
##For Xenial
docker pull dorowu/ubuntu-desktop-lxde-vnc:xenial
提取所需的 Ubuntu 映像后,检查它是否在本地注册表中可用。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
dorowu/ubuntu-desktop-lxde-vnc latest 1a89db715923 10 months ago 1.32GB
步骤 3 – 使用桌面环境运行 Ubuntu 容器
在这里,我们将通过几种配置方法来介绍如何运行 Ubuntu 容器,以便为您带来直观的体验。
快速开始。
您只需运行容器并使用以下命令通过端口 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-desktop-lxde-vnc 替换为相应的镜像。
检查容器是否正在运行并暴露端口。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f8fd69e3865e dorowu/ubuntu-desktop-lxde-vnc "/startup.sh" 17 seconds ago Up 15 seconds (health: starting) 0.0.0.0:6080->80/tcp, :::6080->80/tcp ubuntu_desktop
从输出中可以看出,我们暴露了端口 6080。允许它通过防火墙并继续使用 URL http://IP_Address:6080/ 访问 Ubuntu 桌面。
设置 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
现在访问该页面,您将需要提供密码。
启用 VNC 查看器
VNC 查看器是通过一个单独的端口 5900 访问的,需要公开该端口才能访问它。 VNC 查看器端口可以按如下方式公开。
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。
使用 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 https://IP_address:6081 访问 Ubuntu 桌面。
设置默认桌面用户
运行容器时,默认用户是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
现在,我们将添加另一个用户 thor,其密码为 Passw0rd。
部署到子目录中
容器可以部署到子目录中,并在访问页面时充当前缀。例如,这里我们将 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 http://IP_address:6080/new/ 访问 Ubuntu 桌面
设置屏幕分辨率。
通常,虚拟桌面在连接到服务器时会自动调整浏览器窗口的大小。但是您可以使用变量 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) 的虚拟桌面。
启用声音
首先在您的 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。现在您的容器将启用声音。通过播放声音/视频来测试这一点。
第 4 步 – 管理容器
您可以使用以下命令轻松停止和启动 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
检查服务的状态。
享受!
结束思想。
现在,您拥有在桌面环境中运行所需 Ubuntu 版本的最简单方法。此外,我们还看到了可以对容器进行的各种配置,以使其尽可能直观。
相关文章。
- 在 Podman|Docker 容器中运行 Microsoft SQL Server
- 如何在 Docker 容器中运行 QuestDB SQL 数据库
- 如何在 Ubuntu 上安装 FreeOffice