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

时间:2015-06-03 23:09:40

标签: docker containers

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

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

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

1 个答案:

答案 0 :(得分:13)

Docker是LXC之上的用户友好层,这是一组Linux内核功能,允许文件系统配置,网络资源,进程表和历史上全局的其他内核调解资源的命名空间。 (它比FreeBSD jails更接近kvm或VMware)。

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

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

2017年初更新

Docker现在可以在Mac上运行,通过在Linux上捆绑一个非常类似于kvm的轻量级虚拟化堆栈。以这种方式运行时,它实际上正在进行虚拟化和容器化 - 前者运行(单个)Linux内核,后者在此内核中运行一系列单独的容器。 / p>

这仍然意味着它仅限于运行原生Linux应用程序,并且它仍然无法为桌面应用程序提供显示层(X11,VNC或其他类似的东西需要在加成)。但是,通过捆绑虚拟化工具,现代Docker现在 是一种可移植性解决方案(跨平台,而不是架构)。