我通过阅读一些博客和介绍材料开始使用docker。
我的理解是docker可以将单个应用程序包装到标准化容器中。容器提供了一个沙箱,应用程序需要运行的所有必需资源,并且内部的应用程序始终位于该容器中。这意味着我可以将容器运送到任何地方(不同类型的OS甚至是云平台),并且仍然可以正确运行。
如果我的理解是正确的,那是否意味着微软可以将其办公服包装到一个容器中,并且可以在mac os或linux上安装并运行它?还有一些其他不错的Mac应用程序也可以交付到Windows和Linux吗?
Docker是LXC之上的一个用户友好层,LXC是一组Linux内核功能,允许对文件系统配置,网络资源,进程表以及其他历史上是全局的内核介导的资源进行命名间隔。(与kvm或VMware相比,它更接近FreeBSD监狱)。
这些功能非常特定于Linux,并且在Docker容器中运行的应用程序仍直接与主机的Linux内核接口(尽管它只能访问暴露给它所参与的名称空间的资源子集)。同样,操作码可直接在硬件上运行,而无需模拟虚拟化,因此也不会抽象出硬件差异
因此,Docker 并不是 跨OS(或跨体系结构)的可移植性层,它不会成功地将依赖于特定内核版本的应用程序的实现细节隐藏起来,而完全取决于完全不同的操作系统。
Docker现在通过捆绑类似于Linux上的kvm的轻量级虚拟化堆栈,在Mac上运行。当运行这种方式,实际上做 既 虚拟化和集装箱化- 前者运行(单)Linux内核,后者以这个内核中运行的一系列单独的容器中。
这仍然意味着它仅限于运行本机Linux应用程序,并且仍然没有为桌面应用程序提供显示层(X11,VNC或其他需要使用的其他东西)。但是,通过捆绑虚拟化工具,现代Docker现在 已 成为一种可移植性解决方案(跨平台,而非体系结构)。