不得不尝试来自不同供应商的几套工具的情况并不少见,尤其是在咨询方面,大多数时候都以惊人的速度进行。

在过去的几周里,我一直在为一个客户(由于 COVID-19,整个远程团队)设置一个新项目,该项目的工具将围绕 Red Hat Openshift 和 Fuse。

与地理位置分散的团队合作时,强制执行一致的工具和配置是主要关注点之一,当工具受 UI 限制时,这会变得越来越困难,就像 Red Hat CodeReady Studio 的情况一样,它基本上位于 Eclipse 之上,并有许多使用向导或图表。

多年来,这种一致性采取了不同的形式和形式:

ZIP 文件、虚拟机、在 LAN 案例中从网络安装、Chef、Vagrant,应有尽有......

虚拟机(例如在 VirtualBox 上运行的虚拟机)最终成为解决问题的简单且低成本(嗯,零)成本的方法,但它们的下载大小令人望而却步,并且极难维护,除非您选择混合使用 -与厨师或流浪者一起。

需要说的是,Windows Subsystem for Linux 2 可能会解决其中的一些问题,但它还没有完全成熟,而且并非所有公司提供的笔记本电脑或台式机都能很快使用它。

进入 Docker!

首先,我完全知道 Docker 并不是要替代虚拟机,而且它是否适合图形使用是非常值得怀疑的。

尽管如此,我还是想尝试简化一些工作,并通过大量迭代对其进行尝试:

有许多允许远程显示的技术和协议:

X11、VNC、RDP 是最常见的,除了 Windows 中的 RDP 以及正在使用的任何 VMWare 或 VirtualBox,它们在性能方面都很糟糕,即使没有网络跃点(即:环回适配器)。

在 Docker 容器中成功运行应用程序和窗口管理器后(说起来容易做起来难),即使使用本地 X11 转发,我的性能仍然令人震惊,这可能是因为我使用的是 Windows 10,但它是默认的公司政策,哭也没用。

进入NoMachine!

我在一些 Reddit 线程的最后遇到了 NoMachine,导致https://www.nomachine.com/DT08M00100

就易于安装、配置和性能而言,NoMachine 是一款了不起的软件。在容器内使用 CodeReady 几乎没有任何性能下降,而且由于 CodeReady 是用 Java 和 SWT 编写的,因此在渲染方面并没有从许多优化中受益。

再往下,您可以找到有关如何使用我遇到的解决方案的指南,该解决方案仍然需要大量的修改和调整,但结果是有希望的。

我并不是在提倡整个开发团队都必须被迫拥有更差的开发经验和生产力,因为某些东西的原生版本总是会更高性能,但是有一些重要的利基需要探索。

其中之一是培训。让某人为培训目的安装软件确实没有什么好的借口(除非它是操作培训),如果您可以为某人提供一种方法来拉取 1.5GB 而不是 15GB 的预建环境,那很重要某物。

此外,借助 Docker 的分层功能,这个预构建的环境更加动态。您可以拥有一个包含桌面环境、所需服务和包的基本映像,压缩后的体积非常小(Xcfe 为 450MB,按任何标准来看,这都不是轻量级桌面环境),并逐步添加更专业的映像,包括 git、jdk , ide's 等...

其他重要的领域包括原型设计、概念验证、工具评估、评估新软件版本的影响等......

这些事情我最终做了很多,并且能够以如此快速的方式处理和改变环境可以节省大量时间。

您可以使用 Docker Compose 将这种怪异类型的容器与“常规”容器一起分发,这也是一个不错的额外好处,然后我们可以设置极其复杂的环境,具有出色的控制力和易于更改的能力。

希望这对某人有用并且可以开始一些健康的辩论,我非常愿意在这里或在 github 中提供反馈。

以下指南也可在https://github.com/cmanique/docker-fedora-xfce-nomachine获得(并将更新),但部分是为了发布

启动一个容器

$ docker run --cap-add=SYS_PTRACE -d -p 4000:4000 --name fedora-xfce-nomachine cmanique/fedora-xfce-nomachine

请注意,容器需要作为守护进程运行(除非您希望它以特权方式运行,并且由于入口点而没有意义)

使用 docker exec 进入容器

$ docker exec -it fedora-xfce-nomachine bash

启动NoMachine服务器

$ /usr/NX/bin/nxserver --startup

NX> 111 New connections to NoMachine server are enabled.
NX> 161 Enabled service: nxserver.
NX> 162 WARNING: Cannot find X servers running on this machine.
NX> 162 WARNING: A new virtual display will be created on demand.
NX> 161 Enabled service: nxd.

下载NoMachine

在浏览器上打开https://www.nomachine.com/download并下载相应的安装程序(Windows、Mac、Linux)

在你的 Docker 主机上安装 NoMachine

按照https://www.nomachine.com/DT02O00124上的说明在您的计算机上正确安装软件

启动 NoMachine 客户端并创建新连接

[alt](https://res.cloudinary.com/practicaldev/image/fetch/s--X_t_PVac--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/cmanique /docker-fedora-xfce-nomachine/blob/media/readme-001-nomachine-new.jpg%3Fraw%3Dtrue)

选择NX 作为协议并单击继续

[alt](https://res.cloudinary.com/practicaldev/image/fetch/s--5Gj2JIni--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/cmanique /docker-fedora-xfce-nomachine/blob/media/readme-002-nomachine-protocol.jpg%3Fraw%3Dtrue)

确保默认值合适,然后点击继续

[alt](https://res.cloudinary.com/practicaldev/image/fetch/s--iphQtXZz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/cmanique /docker-fedora-xfce-nomachine/blob/media/readme-003-nomachine-host.jpg%3Fraw%3Dtrue)

确保身份验证设置为密码,然后单击继续

[alt](https://res.cloudinary.com/practicaldev/image/fetch/s--h89ATqJS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/cmanique /docker-fedora-xfce-nomachine/blob/media/readme-004-nomachine-authentication.jpg%3Fraw%3Dtrue)

确保选中不使用代理并单击继续

[alt](https://res.cloudinary.com/practicaldev/image/fetch/s--F-YC4JET--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com /cmanique/docker-fedora-xfce-nomachine/blob/media/readme-005-nomachine-proxy.jpg%3Fraw%3Dtrue)

相应地命名您的连接并单击完成

[alt](https://res.cloudinary.com/practicaldev/image/fetch/s--_-H9AjNG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com /cmanique/docker-fedora-xfce-nomachine/blob/media/readme-006-nomachine-saveas.jpg%3Fraw%3Dtrue)

双击新建连接

[alt](https://res.cloudinary.com/practicaldev/image/fetch/s--C4wzmCUI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/cmanique /docker-fedora-xfce-nomachine/blob/media/readme-007-nomachine-connect.jpg%3Fraw%3Dtrue)

输入用户名密码,可选择保存凭据并单击确定

[alt](https://res.cloudinary.com/practicaldev/image/fetch/s--52Y-gQn2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com /cmanique/docker-fedora-xfce-nomachine/blob/media/readme-008-nomachine-unp.jpg%3Fraw%3Dtrue)

目前,凭证在 Dockerfile 上被硬编码为 nomachine/nomachine

勾选始终在此服务器上创建新显示器并单击

[alt](https://res.cloudinary.com/practicaldev/image/fetch/s--akVHd016--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/cmanique /docker-fedora-xfce-nomachine/blob/media/readme-009-nomachine-createdisplay.jpg%3Fraw%3Dtrue)

勾选 当我连接时在服务器上静音,此连接不再显示此消息,选择底行的第二个图标以调整远程显示的大小到您的窗口,然后单击 OK

[alt](https://res.cloudinary.com/practicaldev/image/fetch/s--i3AsG309--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/cmanique /docker-fedora-xfce-nomachine/blob/media/readme-010-nomachine-audio.jpg%3Fraw%3Dtrue)

享受您的 Fedora Xfce 桌面

[alt](https://res.cloudinary.com/practicaldev/image/fetch/s--G5jwXM9u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/cmanique /docker-fedora-xfce-nomachine/blob/media/readme-011-nomachine-fullscreen.jpg%3Fraw%3Dtrue)

这个案例展示了 Red Hat CodeReady Studio,它也是通过 Docker 安装的,通过扩展这个镜像

停止容器

$ docker stop fedora-xfce-nomachine
Logo

更多推荐