【问题标题】:Can Docker help build executable that work in different platformDocker 可以帮助构建在不同平台上工作的可执行文件吗
【发布时间】:2015-06-21 09:51:15
【问题描述】:

我是 docker 新手,所以我的问题可能非常幼稚/愚蠢。我们目前使用的应用程序需要在不同的平台上编译,才能在所需的平台上运行,主要是Linux和Window。所以我们需要在不同的平台上编译源代码(C/C++),并根据他们的操作系统为客户提供不同的可执行文件。 我的问题是 1. docker 是否有可能让我有一个适用于所有平台的可执行文件?即我在一个平台上编译我的源代码,例如在 Linux 中,并与 docker 一起发布可执行文件以在 Window 平台上运行

提前致谢

【问题讨论】:

    标签: c++ docker boot2docker dockerfile docker-registry


    【解决方案1】:

    您仍然需要在不同平台上编译源代码。 docker 的重点是在每个平台上自动构建和测试代码,这样你就可以只处理代码,让它在每个平台上构建和测试。

    您必须首先设置 docker 和测试脚本并让代码跨平台工作。但是做完之后,除非你真的破解它,否则你基本上可以不用担心任何其他平台。

    【讨论】:

    • 感谢您的回答。我有这个查询,如果我运行我的应用程序以使用 docker 进行测试,与直接在所需平台上运行相比,它的执行是否变得太慢
    【解决方案2】:

    Docker 允许在任何现代 Linux 发行版中运行相同的容器 - 您只需要在此处安装 docker。您不能直接在 Windows 上运行这些容器 - 您需要使用 Linux 运行虚拟机,该虚拟机将运行 docker 容器。这就是 boot2docker 正在做的事情——在 Windows 和 Mac Os X 上的虚拟机上运行 docker 容器。在某些情况下是可以接受的。

    【讨论】:

    • 感谢您的回答。当我们说容器时,它是否与可执行文件相同,即使用所需的源代码编译的。 ? .如果是,那么是否意味着我可以在任何现代 linux 发行版上运行这个 exe,如果他们在那里安装了 docker。
    • 容器是一组文件——通常基于一些 Linux 发行版(例如 Ubuntu)——比如小型轻量级虚拟机——所以它通常是数百个二进制文件(Linux 二进制文件,而不是 windows .exe)典型对于 posix 环境(但有些人使用非常小的基础图像)。还有一些二进制文件默认在容器中执行。这就是为什么您可以在 RedHat Linux 上的容器中运行 Ubuntu 应用程序 - 因为所有 Ubuntu 依赖项都已经存在。
    • 感谢它澄清了疑问。只是最后一个问题。如果我运行我的应用程序以使用 docker 进行测试,与直接在所需平台上运行相比,它的执行是否变得太慢。任何想法或评论。
    • 因为 docker 使用容器化应用程序的 LXC 性能几乎与直接执行一样 - 开销非常小。但同样它只是关于 Linux - 如果你要在其他平台上运行它,你将需要运行 vm,这将对性能产生更大的影响(但在许多情况下它仍然是可以接受的)。
    • @pgh:如果您的主机是 Linux,docker 将以本机速度运行。毕竟,它只是一个美化的 chroot/lxc,因为 dockerized 应用程序与主机的内核一起运行。如果你在任何其他操作系统上运行,那么它必须有一个运行 Linux 的虚拟机,它运行 Docker。这意味着您将获得虚拟机的开销。是否足够快只能由您自己来回答。
    【解决方案3】:

    不,它不能,docker 仅适用于 Linux。要在 Windows 中运行 docker,请need a virtual machine

    除非您花时间打包安装程序脚本来安装虚拟机等,否则您最好只在您选择的 Virtual Box 或 VMWare 中运行适当的 VM。即使那样,您在 Windows 上的应用程序体验也将是二流的,因为它不是本机运行的。

    【讨论】:

      猜你喜欢
      • 2014-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多