Docker 并指定目标操作系统

标签 docker

我已经 read那:

Docker is a system for management and deployment of application containers, not operating system containers.



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

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

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

You can run both Linux and Windows programs and excutables in Docker containers.



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

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

最佳答案

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 主机。

关于Docker 并指定目标操作系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45985673/

相关文章:

rest - 按名称访问服务

docker - 无法连接 : com. github.dockerjava.api.NotFoundException

docker - 是否可以使用和环境变量作为Docker健康检查

docker - docker run -e 的环境变量

docker - 使用容器编排处理 EF Core 迁移

mysql - 如何将RBD镜像(ceph)挂载到mysql docker的默认数据目录

google-chrome - 打开图片时Chrome崩溃

docker - Containerd.io 依赖 libseccomp2

Docker Stack 任务因权限被拒绝错误而被拒绝

java - JAVA_TOOL_OPTIONS 中的环境变量未得到扩展