Docker是一个开放源代码软件项目,它是云服务技术上的一次创新,让应用程序部署在软件容器下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制。
Docker利用Linux核心中的资源分脱机制,例如cgroups,以及Linux核心名字空间,来创建独立的软件容器,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它隔离的进程,因此也称其为容器。Docker在容器的基础上进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大简化了容器的创建和维护,使得其比虚拟机技术更为轻便、快捷。Docker可以在单一Linux实体下运行,避免因为创建一个虚拟机而造成额外负担。
Docker和虚拟机的区别?

对于虚拟机技术来说,传统虚拟机需要模拟整台机器包括硬件,每台虚拟机都需要自己的操作系统,虚拟机一旦被开启,预分配给他的资源将全部被占用。每一个虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。

容器系统和我们的宿主机共享硬件资源和操作系统,可以实现资源的动态分配。容器包含应用和其所有的依赖包,但是与其他容器共享内核,容器在宿主机操作系统中,在用户空间以分离的进程运行。容器没有自己的内核,也没有进行硬件虚拟。
具体与虚拟机技术相比,Docker容器存在一下几个特点:
1、更快的启动速度:Docker没有完整的操作系统
2、更高效的资源利用率
3、更高的系统支持量
4、持续交付与部署
5、更轻松的迁移
6、更轻松的维护与扩展
7、更弱的隔离性:Docker属于进程之间的隔离,虚拟机可以实现系统级别的隔离
8、更弱的安全性:Docker的租户root和宿主机root等同,一旦容器内的用户从普通用户权限升为root权限,它就直接具备了宿主机的root权限,进而可进行无限制的操作。虚拟机租户root权限和宿主机的root权限是分离的,并且利用硬件隔离技术可以防止虚拟机突破和彼此交互,而容器至今还没有任何形式的硬件隔离,这使得容器容易收到攻击。
网友评论