当前位置: 首页 > 知识库问答 >
问题:

Docker运行桌面环境

长孙鸿
2023-03-14

问题是最清楚的,< br >如何在Docker远程容器中启动完整的桌面环境(KDE,XFCE,Gnome无关紧要)。

我在互联网上挖掘,有很多关于相关主题的问题,但不一样,它们都是关于如何运行GUI应用程序,而不是完整的桌面。

我发现:

  • 必要的运行
  • 以某种方式运行例如 Xfce 在该帧缓冲区中
  • 允许 x11vnc 共享正在运行的 X 环境

但是我实际上被困在这里了,总是得到一些错误:

... (EE) Invalid screen configuration 1024x768 for -screen 0
... Cannot open /dev/tty0 (No such file or directory)

为了达到目标,你能给一些Dockerfile行吗?

共有2个答案

公孙盛
2023-03-14

x11docker允许在docker中运行桌面环境以及单个GUI应用程序。

为了达到目标,你能给一些Dockerfile行吗?

docker hub上的桌面图像示例。

x11docker做了很多设置来保持容器隔离,并提供了一些额外的选项,如硬件加速或脉冲音频声音。示例:

x11docker --desktop x11docker/lxde

X11docker还支持SSH、VNC和HTML5的网络设置

使用 XPRA 进行固态混合存储设置的示例:

read Xenv < <(x11docker --xdummy --display=30 x11docker/lxde pcmanfm)
echo $Xenv && export $Xenv
# replace "start" with "start-desktop" to forward a desktop environment
xpra start :30 --use-display --start-via-proxy=no

从客户端系统,连接到

xpra attach ssh:HOSTNAME:30  # replace HOSTNAME with IP or host name of ssh server

没有x11docker:

使用Xephyr作为主机上的嵌套X服务器的一个非常简单的设置是:

Xephyr :1
docker run -v /tmp/.X11-unix/X1:/tmp/.X11-unix/X1:rw \
           -e DISPLAY=:1 \
           x11docker/xfce

带有Xfce桌面的短Dockerfile:

FROM debian:stretch
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends xfce4 dbus-x11
CMD startxfce4
严言
2023-03-14

这就是我一直在寻找的,Docker中最简单的桌面形式:

FROM ubuntu
RUN apt-get update
RUN apt-get install xfce4 -y
RUN apt-get install xfce4-goodies -y
RUN apt-get purge -y pm-utils xscreensaver*
RUN apt-get install wget -y

EXPOSE 5901

RUN wget -qO- https://dl.bintray.com/tigervnc/stable/tigervnc-1.8.0.x86_64.tar.gz | tar xz --strip 1 -C /
RUN mkdir ~/.vnc
RUN echo "123456" | vncpasswd -f >> ~/.vnc/passwd
RUN chmod 600 ~/.vnc/passwd


CMD ["/usr/bin/vncserver", "-fg"]

不幸的是,我不能用x11vnc和xvfb来分类。但是TigerVNC结果要好得多。

示例使用xfce gui生成容器并使用123456密码运行vncserver。无需手动覆盖~/. vnc/xstart,因为TiterVNC默认启动X服务器!

要运行服务器,请执行以下操作:

sudo docker run --rm -dti -p 5901:5901 3ab3e0e7cb

要使用vncviewer进行连接,请执行以下操作:

vncviewer -AutoSelect 0 -QualityLevel 9 -CompressLevel 0 192.168.1.100:5901

您可能还会遇到ipc_channel_posix(chrome 和其他浏览器将无法正常工作)的问题,以消除此运行容器与内存共享:

docker run -d --shm-size=2g --privileged -p 5901:5901 image-name
 类似资料:
  • 据我所知,docker不支持在生成容器后更改端口映射的任何命令 但是这个答案说,通过更改主机配置。json文件,我可以更改端口映射。 如何将端口映射分配到现有的Docker容器? 我在Windows WSL2中使用docker桌面。所以hostconfig.json路径与其他答案不同。 hostconfig.json? 在我的例子中,(\wsl$\docker-desite-data\mnt\ws

  • 一旦启动 Docker 桌面 4.4.4 版本 ,Docker 服务停止并出现以下错误

  • 使用Hyper-V在Windows上运行docker desktop时,我有一个名为DockerDesktopVM的虚拟机,其中运行的Linux虚拟机中有它的容器。 然而,当我用WSL引擎运行docker desktop时,我看到它创建了2个WSL发行版。 docker桌面 我可以像其他发行版一样进入docker桌面发行版。 但是,试图对docker桌面数据做同样的操作只会让我大吃一惊。 所以我的

  • 不同的操作系统在各自的桌面应用上提供了不同的特性。例如,在 windows 上应用曾经打开的文件会出现在任务栏的跳转列表,在 Mac 上,应用可以把自定义菜单放在鱼眼菜单上。 本章将会说明怎样使用 Electron APIs 把你的应用和桌面环境集成到一块。 最近文档 (Windows & OS X) Windows 和 OS X 提供获取最近文档列表的便捷方式,那就是打开跳转列表或者鱼眼菜单。

  • 不同的操作系统在各自的桌面应用上提供了不同的特性。例如,在 windows 上应用曾经打开的文件会出现在任务栏的跳转列表,在 Mac 上,应用可以把自定义菜单放在鱼眼菜单上。 本指南介绍如何使用Electron API将应用程序集成到这些桌面环境中。 通知功能 详见通知文档​ 最近文档 (Windows & macOS) 在Windows 和 macOS 中,打开跳转列表或鱼眼菜单即可轻松访问最近

  • 登录管理器 我们选择 GDM 作为登录管理器 pacman -S gdm 安装完成后,编辑 /etc/rc.conf,在 DAEMONS字段中添加 gdm DAEMONS=(syslog-ng network netfs crond gdm) Xfce 桌面环境 如何选择桌面环境,是一个倍受争议话题。对于新手,我推荐 Xfce ,它有相对玲珑的体形和丰富的功能。 pacman -