Docker 并指定目标操作系统

And*_*ndy 4 docker

读过

Docker 是用于管理和部署应用程序容器的系统,而不是操作系统容器。

但是,在一些资源中(例如大约 1:20 进入https://www.youtube.com/watch?v=pGYAg7TMmp0)它提供了一个“问题”示例,如果您在 Windows 上开发了 Web 应用程序,您可能会遇到PC 或 Mac,并将其部署到 Linux 服务器。

那么,Docker 在这种情况下如何提供帮助呢?如果我们采用一个 Web 应用程序,我知道 Docker 可以帮助您使用源代码创建一个容器,并说一个特定版本的 PHP。但是,如果它与运行 Docker 的服务器不同,您能否为它指定一个运行目标操作系统?

Docker FAQ ( https://docs.docker.com/engine/faq/ ) 说

您可以在 Docker 容器中运行 Linux 和 Windows 程序和可执行文件。

这是否意味着您需要在 LinuxWindows 机器上分别安装 Docker才能执行此操作,还是可以在您的 Docker 映像中指定任何操作系统并让任何机器运行它?

请有人解释一下 - 或者是否 - Docker 如何为您的应用程序指定特定的操作系统?

BMi*_*tch 6

Docker 最初是作为在 Linux 主机上运行容器的一种方式,这仍然是 Docker 容器的主要目标。开发人员环境包括一个嵌入式 VM,用于在 Mac 和 Windows 上运行 Linux。最初这是 VirtualBox,但较新的版本使用 xhyve 和 hyperv。所有这些中的主机操作系统都是 Linux,因此您不会在一个操作系统上构建映像并在另一个操作系统上运行它。

从那以后,Docker 扩展了目标操作系统。这要求您为该操作系统安装 docker,并且需要将您的映像设计为在该架构/操作系统上运行。这开始于其他 Linux 架构,如 arm64,现在是 zLinux。与 Microsoft 的合作是一次相当大的改写,部分是在 Windows 本身中,但也在 Docker 代码中,尤其是在旨在在 Windows 上本地运行的映像中。要运行这些,您必须更改 Docker for Windows 上的设置以运行 Windows 容器而不是 Linux 容器,您不能在同一主机上同时运行它们。目前,运行 Windows 二进制文件只能在 Windows 主机上完成,微软没有为 Linux 主机提供免费的 VM。作为一个新的目标平台,它在功能上仍然落后于 Linux 主机。