据我所知,VM使用硬件虚拟化,而dockers使用软件虚拟化,因此具有更好的性能(在某种情况下,假设我在Windows机器上运行Dockerized Linux )。但是,OS虚拟化比硬件虚拟化更快的确切原因是什么?
发布于 2018-11-02 22:37:37
Docker不做虚拟化。它使用kernel namespaces来实现类似chroot的效果,不仅针对根文件系统,而且针对进程信息(PID名称空间)、挂载点、网络、IPC (共享内存)、UTS信息(主机名)和用户id。
容器与主机共享内核。为了安全起见,Docker使用AppArmor/SELinux,Linux capabilities和seccomp来过滤系统调用。控制组(称为cgroups)用于进程记帐和对资源施加限制。
发布于 2018-11-02 22:44:07
Docker不是关于虚拟化的。它是关于容器化的(如何在隔离的环境中运行进程)。
这意味着你不能在windows上运行linux容器,或者在linux上一个windows容器,而不使用某种虚拟化(Virtualbox,Hyper-v...)在您的笔记本电脑上进行开发是可以的,但是在生产环境中,您需要为您的容器选择合适的架构。
什么是容器?
来自A sysadmin's guide to containers
传统的Linux容器实际上只是Linux系统上的普通进程。这些进程组使用资源约束将与其他进程组隔离开来:
手动设置所有这些(网络名称空间、iptable-rules等)使用linux命令会很棘手,所以当你输入docker ...命令时,docker-daemon的工作就是做这些事情,事情就会在幕后发生……
关于速度。
首先,由于引入的复杂性,容器可能比直接在主机网络堆栈上运行进程的速度要慢。请看下面的示例:Performance issues running nginx in a docker container
但是,他们会为你提供速度。如何?:
关于Windows容器
容器是一种"linux“的东西,但这股集装箱化的浪潮也对Windows领域产生了影响。一开始,docker-toolbox使用Virtualbox在linux上运行容器。后来,引入了docker-for-windows,并提供了直接在主机上或在hyper-v上运行容器的选项。如果你访问Windows Container Types,你可以找到更多。
https://stackoverflow.com/questions/53119988
复制相似问题