docker - Linux 应用程序可以使用 Docker 在 Windows 上运行吗?

标签 docker cross-platform virtualization

我知道这个问题( Can Windows Containers be hosted on linux? ),但它并没有真正回答我的问题。

我是 Docker 的新手,但我的问题是这样的 - 如果我使用任何 Windows 应用程序,将它放在 Docker 容器中,它现在可以在 Linux 上运行,反之亦然?

Confluent声称它只能在 linux 上运行,但我的同事使用 Docker 在 Windows 上安装了它。那么如果可以用Docker安装,那么整个应用就一定算是跨平台了吧?

我想我在这里遗漏了一些重要的观点。

最佳答案

Docker 不是虚拟机,它是一种在共享内核上运行应用程序的方式,将这些应用程序彼此隔离。 Windows 二进制文件不在 Linux 内核上运行,反之亦然(暂时忽略 Windows 的 Linux 运行时)。因此,如果您使用 Windows 应用程序构建容器,则只有在 Dockers Windows 运行时和 Windows 基础镜像上这样做时,它才会运行。它不会在 Linux 主机上运行。

docker 提供的是运行 Linux 的嵌入式 VM(最初是 VirtualBox,但当前版本是 HyperV)。通过为 Windows 运行 Docker,默认情况下会使用此 VM,并且您只会运行 Linux 容器,因此您的 Windows 应用程序甚至不会在容器内运行。要运行 Windows 二进制文件,您需要切换 Docker for Windows 以使用 Windows 运行时,目前这是一个切换,您不能在同一主机上同时运行 Linux 和 Windows 运行时。

也没有与 Docker 的 Linux 安装打包在一起的 Windows VM。如果您需要 Windows 支持,您需要在 Linux 主机上的 VM 中安装自己的 Windows 副本(并获得许可,这就是 Docker 不提供此功能的原因)并在该 VM 中运行您的容器。

关于docker - Linux 应用程序可以使用 Docker 在 Windows 上运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46158206/

相关文章:

php - Docker 容器中的 SSH 导致 HTTP 404

docker - 从镜像创建 Docker 容器而不启动它

linux - 复制失败 : stat/var/lib/docker/tmp/docker-builder700869788/private: no such file or directory

javascript - 每个平台上的 XML、PDF 和 Office 文档的数字签名

Python:打开 Thunderbird 以编写带有附件的新邮件

windows - 运行不受信任的第三方软件

linux - 在 QEMU 中,是否可以拦截 Linux guest 操作系统发送/接收的数据包?

docker - 致命的 : [x. x.x.x] : FAILED! => {"msg": "Missing sudo password"}

java - 是否可以使用 Jambi 制作完全原生感觉的 GUI?

linux - 从原始文件创建虚拟机 - Proxmox