docker 是应用程序跨平台的解决方案吗?

Is docker a solution for making application cross platform?

我通过阅读一些博客和介绍 material 开始使用 docker。

我的理解是docker可以将单个应用程序包装到一个标准化的容器中。容器提供了一个沙箱,应用程序需要的所有必要资源 运行,并且里面的应用程序始终存在于该容器中。这意味着我可以将容器运送到任何地方(不同类型的 OS 甚至云平台)并且它应该仍然可以 运行 正确。

如果我的理解是正确的,那是否意味着 microsoft 可以将他们的办公套装包装到一个容器中,我可以安装并 运行 它在 mac os 还是 linux?其他一些不错的 Mac 应用程序也可以发送到 windows 和 linux?

Docker 是 LXC 之上的一个用户友好层,一组 Linux 内核功能允许命名空间的文件系统配置、网络资源、进程表和其他内核介导的资源历史上是全球性的。 (与 kvm 或 VMware 相比,它更接近于 FreeBSD 监狱)。

这些功能是 Linux 特有的,运行 应用程序在 Docker 容器中仍然直接与主机的 Linux 内核交互(尽管它只能访问暴露给它参与的名称空间的资源子集)。同样,操作码 运行 直接在硬件上,没有对虚拟化进行仿真,因此硬件差异也没有被抽象出来

Docker 因此 不是 跨 OS(或跨架构)可移植层,它不会成功地向应用程序隐藏实现细节这取决于特定的内核版本,更不用说完全不同的操作系统了。


2017 年初更新

Docker 现在 运行 在 Mac 上,通过捆绑与 Linux 上的 kvm 非常相似的轻量级虚拟化堆栈。当 运行ning 这种方式时,它实际上是在做 虚拟化和容器化——前者到 运行 一个(单个)Linux 内核,后者运行 该内核中的一系列独立容器。

这仍然意味着它仅限于 运行 宁本机 Linux 应用程序,并且它仍然没有为桌面应用程序(X11、VNC 或类似的其他东西)提供显示层需要另外使用)。然而,通过捆绑虚拟化工具,现代 Docker 现在 某种可移植性解决方案(跨平台,而非架构)。