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

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

如果我的理解是正确的,那么这是否意味着微软可以将其办公服包装到一个容器中,并且可以在mac os或linux上安装并运行它?还有一些其他不错的Mac应用程序也可以交付到Windows和Linux吗?

最佳答案

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

这些功能非常特定于Linux,并且在Docker容器中运行的应用程序仍直接与主机的Linux内核接口(interface)(尽管它只能访问暴露给它所参与的 namespace 的资源子集)。同样,操作码可直接在硬件上运行,而无需模拟虚拟化,因此也不会抽象出硬件差异

因此,Docker是跨操作系统(或跨体系结构)可移植性层的而不是,并且它不会成功地将依赖于特定内核版本的应用程序的实现细节隐藏起来,更不用说完全不同的操作系统了。

2017年初更新

Docker现在通过 bundle 类似于Linux上的kvm的轻量级虚拟化堆栈,在Mac上运行。当以这种方式运行时,它实际上同时在进行虚拟化和容器化-前者运行一个(单个)Linux内核,后者运行在该内核中的一系列单独的容器。

这仍然意味着它仅限于运行本机Linux应用程序,并且仍然没有为桌面应用程序提供显示层(X11,VNC或其他需要使用的其他东西)。但是,通过 bundle 虚拟化工具,现代Docker现在已成为一种可移植性解决方案(跨平台,而非体系结构)。

10-01 03:52
查看更多