Docker学习笔记(二)docker的机制和原理

运行原理

Docker学习笔记(二)docker的机制和原理

在docker客户端(docker client)中运行docker的各种命令,而这些命令会传递给docker的宿主机上运行docker的守护进程。而docker的守护进程负责实现docker的各种功能

docker的守护进程运行在宿主机上,也就是cs架构的server端,守护进程会在启动后一直在后台运行。负责实现docker的各种功能。而docker使用者并不会直接与守护进程交互,而是要通过docker的客户端,也就是docker的命令行接口来与docker守护进程进行通信,也就是在shell中运行的docker的二进制程序。接收docker的守护进程的执行命令,然后将结果返回给客户端,显示在命令行中。

docker和虚拟机的区别

Docker学习笔记(二)docker的机制和原理

虚拟机和容器都是在硬件和操作系统以上的,虚拟机有Hypervisor层,Hypervisor是整个虚拟机的核心所在。他为虚拟机提供了虚拟的运行平台,管理虚拟机的操作系统运行。每个虚拟机都有自己的系统和系统库以及应用

容器没有Hypervisor这一层,并且每个容器是和宿主机共享硬件资源及操作系统,那么由Hypervisor带来性能的损耗,在linux容器这边是不存在的。但是虚拟机技术也有其优势,能为应用提供一个更加隔离的环境,不会因为应用程序的漏洞给宿主机造成任何威胁。同时还支持跨操作系统的虚拟化,例如你可以在linux操作系统下运行windows虚拟机。

Docker学习笔记(二)docker的机制和原理

从虚拟化层面来看,传统虚拟化技术是对硬件资源的虚拟,容器技术则是对进程的虚拟,从而可提供更轻量 级的虚拟化,实现进程和资源的隔离。
从架构来看,Docker比虚拟化少了两层,取消了hypervisor层和GuestOS层,使用 Docker Engine 进行调度和隔离,所有应用共用主机操作系统,因此在体量上,Docker较虚拟机更轻量级,在性能上优于虚拟化,接近裸机性能。从应用场景来 看,Docker和虚拟化则有各自擅长的领域,在软件开发、测试场景和生产运维场景中各有优劣