1.什么是Docker
Docker是世界级的软件容器平台。当开发者与同事在代码层面合作时,使用Docker可以消除『在我机器上正常』的问题。运维人员使用Docker可以在隔离的容器中并行地运行和管理应用,以达到更好的计算密度。企业使用Docker可以建立具备更快、更安全和更自信的敏捷交付管道,无论是Linux平台还是Windows平台服务的应用。
2.什么是容器
使用容器,任何需要的一系列软件运行的基础设施可以打包到隔离的容器中。与VMs(虚拟技术)不同,容器并不捆绑一个完整的操作系统,而是基于软件正常运行的需要,提供库(librarys)和对应的设置。这使得一个高效、轻量、自包含的系统可以保证软件总是一致运行(平台无关),无论其发布到哪里。
3.什么是容器镜像
容器镜像是一系列轻量级的、独立的、可执行的软件正常运行所需的一系列包:代码、运行时、系统工具、系统库、设置等等。基于Linux和Windows的应用,容器化的软件在不同的环境下可以保证一致运行。容器将软件从其环境中隔离出来,比如开发和演示环境的区别可以减少团队在相同的设备上运行不同软件所导致的冲突。
换句话说就是,没一个软件运行所需的基础设施都可以按粒度进行拆分,拆分后使用不同镜像装载到容器中。这使得每一个基础设施都是相互隔离的,互不影响。举例来说,使用tomcat发布两个应用,在传统的物理机器上可以发布为两个tomcat进程,而在容器中,则类似于使用两台机器进行了发布,只不过容器镜像没有实际的物理机器具备一系列完整的基础设施而已,而只负责tomcat正常运行所需。
轻量
Docker容器运行在单个机器上并分享该台机器的操作系统内核;即时启动且占用很少的计算和内存资源。从文件系统层面构造镜像,并共享文件。这最大限度地减少了磁盘的使用,镜像下载速度也更快。
标准
Docker容器基于开发标准,并运行在所有Linux主要分发版本、Windows和任意设施上,包括虚拟机(VMs)、裸金属甚至是云上。
安全
Docker容器将应用程序从底层基础设施和其他应用隔离开来。Docker针对单个容器提供强大的默认隔离级别限制应用的问题,而不是针对整台机器。
因此,即使一个容器中的应用或配置出现了问题,对其他容器中的镜像在非业务逻辑方面是没有影响的。
4.容器与虚拟机的比较
容器是一个应用层上的抽象,将代码和其依赖封装到一起。多个容器可以运行在同一台机器上,可以与其他容器共享操作系统内核,每一个容器在用户空间以一个隔离的进程运行。容器比虚拟机占用更少空间(容器镜像通常也只有几十M),且启动大多数是即时的。
而虚拟机则是在物理硬件上的抽象,实现一个服务向多个服务的转换。系统管理器允许多台虚拟机运行在单台机器上。每一台虚拟机包含一个完整的操作系统,一个或多个应用程序,必要的二进制和库,占用空间按G为单位。通常虚拟机的启动也很慢。
关于容器和虚拟机的更多比较,后续再补充。其核心对比为上述内容。
但实际上虚拟机和容器是可以结合使用的。特别是在单机环境中,结合虚拟机和容器技术,可以模拟各类分布式集群系统的搭建。在本系列文章的后面章节,笔者将使用mac结合虚拟机和容器技术进行各类集群的搭建,此为后话。
网友评论