Docker,检测主机操作系统

dov*_*isz 6 docker

我正在使用 Docker 为 Web 应用程序创建开发设置。我们有在 Windows、Mac 和 Linux 上运行的开发人员。每个人都会使用 Linux 容器,但仍然存在仅影响 Windows 用户的问题。

我不希望以不同于生产的方式运行应用程序。相反,需要与众不同的是围绕开发人员设置的工具。

有没有办法从 Docker 容器中检测主机的操作系统?

gro*_*taj 1

你真的想这样做吗?

我知道您对框架挑战的答案不满意,但请耐心等待。

您所面临的问题之所以出现,是因为在 Windows 上运行基于 Linux 的 Docker 是一种黑客行为。当然,您可能会遇到 Windows 文件系统问题,但可能还有其他我不知道的问题。

现在,据我了解,您希望向项目添加特定于平台的解决方法,以允许在 Windows 主机上的虚拟机中运行它。根据我的经验,我建议避免这种情况。

  1. Windows 不是您项目的目标平台。添加针对 Windows 特定问题的解决方案会带来不必要的复杂性。不必要的复杂性意味着增加的维护成本和潜在的错误,否则这些错误不会发生。

  2. 您很可能会遇到更多由文件系统不兼容引起的问题,这些问题严格来说并不是项目问题,但在 Windows 下仍然会增加不必要的麻烦。例如,当有人在区分大小写的文件系统(即 Linux)上进行仅大小写的文件名更改,而其他人将这些更改拉到 Windows 计算机上时,git 就会崩溃。

真正的解决方案是在尽可能类似于预期的环境中进行开发。这意味着 - 在实际的 Linux 主机或 Linux VM 中。这将保证开发人员不会在仅存在于其开发平台上的问题上浪费时间(和金钱)。它还将保证他们不会错过 Windows 上未出现的问题。

您的客户并不关心产品是否在 Windows 上的 Linux VM 中运行良好。无论如何,您的开发人员都必须熟悉 Linux,因为您的目标是将 Linux 作为您的唯一平台。您真的想将资源花费在现实场景中不存在的问题上吗?

  • 我正在另一个容器中运行它们。我只想为Windows用户以这种方式安装钩子。-- 钩子启动容器 :O (3认同)
  • 1.我需要去开发人员所在的地方。他们运行Windows,所以我需要让它工作。 (2认同)
  • @gronostaj:我不想在这个问题上与你争论,但是你看,我们不必使用 Linux 来开发 Linux 软件。“如果你的目标平台是 Linux,那么支持 Windows 真的值得吗?” - 是的,开发环境并不总是像部署环境那么强大。我们也可以在 Windows 主机上部署 docker。仅仅因为人们不经常这样做并不意味着他们根本不这样做。回到问题,docker只是一个和其他SW一样的SW,它可以很容易的得到它的运行环境。我们只是想知道是否可以从 docker 获取该信息。 (2认同)
  • 我同意@Han:这没有用。它根本没有回答这个问题。是的,有很多现实世界的场景,例如,同时为 Linux 和 Windows 进行开发时,或者当您的公司有必须使用 Windows 的政策时(请不要开始讨论这是否是一个好的政策,因为它不是也没有帮助)。 (2认同)