什么是docker?什么是容器技术?

什么是容器技术?

IBM DeveloperWorks网站关于容器技术的描述十分准确:它是一种内核轻量级的操作系统层虚拟化技术。可以有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译。容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制。此外,也避免了准虚拟化和系统调用替换中的复杂性。

什么是docker?

Docker是基于Go语言进行开发实现,一个开源的应用容器引擎。采用Linux内核的cgroup,namespace,以及AUFS类的Union FS等技术,对进程进行封装隔离,也可以实现虚拟化,隔离的进程独立于宿主和其他的隔离进程,因此也称其为容器。

可以将Docker容器理解为一种轻量级的沙盒,每个容器内运行着一个应用,不同的容器相互隔离,容器之间也可以通过网络互相通信。容器的创建和停止十分快速,几乎跟创建和终止原生应用一致;另外,容器自身对系统资源的额外需求也十分有限,远远低于传统虚拟机。很多时候,直接将容器当作应用本身也没有任何问题

为什么使用docker

对于开发和运维人员来说,最希望的效果就是一次创建或者配置后,可以在任意地方、任意时间让应用正常运行,对于算法研究人员来说,可能不同的算法需要不同版本的软件,那么在同一个环境中就会存在冲突,docker 的环境隔离就可以很方便的用于不同环境的配置。具体来说,docker优势主要有以下几个方面:

  • 快速交付和部署

    使用docker,开发人员可以使用镜像快速构建一套标准的开发环境;开发完成后,测试和运维人员可以使用完全相同的环境部署代码,只要是开发测试过的代码就可以确保在生产环境无缝运行。docker可以快速创建和删除容器,实现快速迭代。

  • 高效的资源利用

    运行docker容器不需要额外的虚拟化管理程序的支持,docker是内核级的虚拟化,可以实现更高的性能,同时对资源的额外需求很低。

  • 轻松的迁移和扩展

    docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、服务器等,同时支持主流的操作系统发行版本,这种兼容性让用户可以在不同平台间轻松的迁移应用。

  • 简单的更新管理

    使用Dockerfile生成镜像的方式,只需要小小的配置修改,就可以替代以往大量的更新工作,所有的修改都以增量的方式进行分发和更新,从而实现自动化且高效的容器管理。

docker与容器区别

docker也可以称为容器,那么docker 与容器的区别是什么呢?容器技术从发展历史看有chroot, control groups, rocket, docker等,docker因其自身架构不断完善,逐渐成为众多容器技术中最流行的。

docker与虚拟机区别

docker作为一种轻量级的虚拟化方式,其在运行应用上跟传统的虚拟机相比具有如下显著优势:

  • docker容器很快,启动和停止均可以在秒级实现,相比传统的虚拟机需要数分钟要快得多

  • docker对系统资源需求很少,一台主机上可以同时运行数千个Docker容器

  • Docker通过类似Git设计理念的操作来方便用户获取、分发和更新镜像,存储复用,增量更新

  • Docker容器除了运行应用外,基本不消耗额外的系统资源,其应用获得的是接近原生的性能,传统虚拟机需要单独分配内存、磁盘等资源

  • Docker通过Dockerfile支持灵活的自动化创建和部署机制,以提高工作效率并标准化流程

  • Docker方便迁移,将镜像push到仓库,可以通过pull镜像在任何一台机器上启动docker

    总之,docker比虚拟机更加轻便、使用更加方便

docker与虚拟化

在计算机领域虚拟化技术一般指的是计算虚拟化,或者通常说的服务器虚拟化,维基百科中的定义如下“在计算机技术中,虚拟化是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存等,予以抽取、转换后抽象出来,打破实体结构间的不可切割的障碍,使用户可以用比原本的组态更好的方式来应用这些资源”。Docker及其他容器技术都属于软件虚拟化中的操作系统虚拟化的范畴,操作系统虚拟化最大的优势是不需要额外的supervisor支持,传统操作系统虚拟化方式是在硬件层面实现虚拟化,需要有额外的虚拟机管理应用和虚拟机操作系统层,Docker容器实在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,更加轻量级

发布了28 篇原创文章 · 获赞 11 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章