docker - 如何显示在 Docker 容器内运行的操作系统的 GUI?
问题描述
我想浏览在 Docker 容器中运行的操作系统,就像在典型的虚拟机中一样。
我已经尝试过运行像 firefox 这样的应用程序,这是一个非常常见的示例,但我也想浏览操作系统的图形界面,如下例所示
https://www.youtube.com/watch?v=PXs2aGKt8gU
这是我正在使用的代码,以便在安装了 c++ 编译器的情况下浏览 Ubuntu。
FROM ubuntu:16.04
RUN apt-get update && apt-get install -y \
gcc \
g++
理想情况下,我希望能够通过 Web 浏览器或任何其他窗口查看操作系统界面 (GUI),方法是在我的 Mac OS X 和 Cent OS 桌面上运行 Docker。
解决方案
运行 GUI 桌面并不是Docker
预期的用途。
主要是因为Docker
希望您有一个 PID 为 1 的主进程,并且在该进程处于活动状态之前,您的容器被称为正在运行。进程死亡 -> 容器停止。这就是为什么不鼓励在 Docker 中运行多个进程的原因。在运行桌面时(您可能还想在那里启动您最喜欢的 IDE,对吗?)您有很多进程,但不知道哪个是主要的。
如果您不需要 IDE,而只需要更快地浏览容器内的文件,我建议您安装 Midnight Commander ( apt-get install --yes mc
) - 它可以使用默认 tty 或 ssh 运行,并且不需要大量设置。在 shell 中打印mc
就足以在安装后启动它。
推荐阅读
- c# - 事件处理程序在异步方法中引发了两次
- angular - Angularfire2 中的离线 Promise 处理
- javascript - 在尝试使用 botkit 构建 slackbot 时,如何解决 Botkit.slackbot 不是我的代码的功能错误?
- node.js - Node Express 路由器 /users/:id vs /users/login
- javascript - 默认值为空时如何使Vue材质选择框显示选项?
- c# - 亚马逊 MWS Feed API - 我们多久可以提交“_POST_INVENTORY_AVAILABILITY_DATA_”Feed?
- gradle - 如何让 IntelliJ 忽略 gradle sourceSets 的子集?
- c# - 尝试在 linux 中构建 Azure 函数应用程序,以下错误返回“未找到作业函数。尝试公开您的作业类和方法”
- ruby-on-rails - Rails 中的乐观锁定不允许在控制台中修改记录
- node.js - 从查询 mongoose 中删除字段