【问题标题】:How to open Ubuntu GUI inside a Docker image如何在 Docker 映像中打开 Ubuntu GUI
【发布时间】:2017-04-01 04:24:52
【问题描述】:

我已经在 Windows 上的 Docker 中下载了 Ubuntu 映像。

我可以通过以下方式运行 Ubuntu:

docker run -it ubuntu

我只看到root,但我没有看到 Ubuntu GUI。如何为该映像安装或配置 GUI 并在该 GUI 上运行应用程序,就像我们在 VM 中运行一样?

【问题讨论】:

  • 从 docker 容器中需要 Ubuntu GUI 的用例是什么? Docker 通常无头运行,因此您可以安装 X 并运行 VNC 服务器或我猜的东西......但看起来很奇怪。
  • Docker 镜像应该运行一个应用程序,通常是服务器或计算应用程序。有时它涉及多个应用程序,但通常不提供 UI。 UI 需要更多,因为 docker 不是一个好的用例。
  • 我实际上想编写python代码并调试图像中的所有东西,在ubuntu图像中这样做的方法是什么?
  • all the things。请更具体。你想调试你的python代码,还是更多?
  • 然后使用虚拟机。这听起来不像是对 docker 的适当使用

标签: ubuntu docker docker-image


【解决方案1】:

fcwu/docker-ubuntu-vnc-desktop

https://github.com/fcwu/docker-ubuntu-vnc-desktop 提供了方便的设置:

sudo docker run --name ubvnc -p 6080:80 -p 5900:5900 dorowu/ubuntu-desktop-lxde-vnc:bionic

然后在主机上:

要退出,只需在终端上杀死 docker。并重新启动机器:

sudo docker start ubvnc

然后重新连接 VNC。然后退出机器:

sudo docker stop ubvnc

您必须等待几秒钟,让客户机上的 VNC 服务器启动,然后才能连接。

来宾内部的 Chromium 不会从菜单启动。如果您尝试从命令行启动它,它会解释原因:

Running as root without --no-sandbox is not supported. See https://crbug.com/638180.

所以只需从 CLI 运行它:

chromium-browser --no-sandbox

Firefox 不在乎。

TODO:没有音频。 --device /dev/snd 没有帮助:

编辑:他们为它添加了一个部分:https://github.com/fcwu/docker-ubuntu-vnc-desktop/tree/e4922ce92f945fc482994b7a0fd95ca5de7295b3#sound-preview-version-and-linux-only

另见:

测试日期:

  • Ubuntu 19.04 主机,fcwu/docker-ubuntu-vnc-desktopdorowu/ubuntu-desktop-lxde-vnc 图像 ID:70516b87e92d。
  • Ubuntu 21.10 主机,dorowu/ubuntu-desktop-lxde-vnc:focal (Ubuntu 20.04)

【讨论】:

  • 在windows机器上我们可以安装一个像realvnc这样的vncviewer并连接到127.0.0.1:5900。
  • 这是目前最有效的“x in vnc”解决方案之一。我只是希望它是 gnome :/
【解决方案2】:

通常,使用 Docker 进行开发的方法是将 IDE 保留在工作站上,并使用从源代码生成的二进制文件构建映像。

您可以在domeide.github.io/ (Docker meets the IDE!)中找到许多此类工作流的示例(本地编译、在 Docker 容器中部署)
例如:Docker Tools for VisualStudio 允许您的编辑器和 Docker 进程之间的紧密集成。

(但这是针对 Visual Studio 2015,而不是 Visual Studio Code。)

【讨论】:

  • 感谢您清除我,我想我必须在主机工作站的 VS 代码中的 Visual Studio 代码中编写 python 代码,并使用 ubuntu python 库 docker 图像的图像,对吗?并使用它构建
  • @ShanKhan 这就是想法,是的。您可以使用带有数据卷的 docker run -v 将本地文件夹挂载到容器中 (docs.docker.com/engine/tutorials/dockervolumes/#/…)
  • 最后一个链接坏了(404)。
【解决方案3】:

您可以直接将 Docker 容器连接到您的 X 服务器。

请参阅堆栈溢出问题Can you run GUI applications in a Docker container?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多