美文网首页
Docker容器技术----什么是容器?

Docker容器技术----什么是容器?

作者: SavingUnhappy | 来源:发表于2019-03-22 17:26 被阅读0次

    什么是容器?

    先看看我们生活中的容器。生活中见到的瓶瓶罐罐,就是容器,用来成放东西,并且保护里面的内容不被侵染。
    LXC,是Linux Container的缩写,看名称就知道是容器了。是一种内核虚拟化技术,提供轻量级的虚拟化,以便隔离进程和资源。LXC所实现的隔离性主要是来自内核的命名空间, 其中pid,net,ipc,mnt,uts等命名空间将容器的进程、网络、消息、文件系统和hostname隔离开。
    而Docker相当与是对LXC封装进行二次发行,利用LXC实现类似VM的功能。
    看看Docker官网是如何介绍的:

    容器是一个标准化的软件单元,它将代码及其所有依赖关系打包,以便应用程序从一个计算环境可靠快速地运行到另一个计算环境。Docker容器镜像是一个轻量的独立的可执行的软件包。包含程序运行的时候所需的一切:代码,运行时间,系统工具,系统库和设置。

    Docker容器运行在Docker-Engine中,适用与Windows和Linux,无论基础架构如何,容器软件都将执行相同的运行。容器将软件与其环境隔离开来,并确保它可以统一运行,尽管开发和分段之间存在差异。

    • 标准: Docker创建了容器的行业标准,因此它们可以随处携带。
    • 轻量级:容器共享机器的操作系统内核,因此不需要每个应用程序的操作系统,从而提高服务器效率并降低服务器和许可成本。
    • 安全:应用程序在容器中更安全,Docker提供业界最强大的默认隔离功能。

    容器与虚拟机的区别

    为什么要和虚拟机做比较,用过虚拟机的同学应该知道,虚拟机也是将主机资源分配出一部分,进行隔离,提供另一个系统环境。
    但是虚拟机是模拟出了一台完整的电脑,包括它的硬件资源,虚拟机是可以像电脑一样进入bios中,使用u盘安装系统的。
    看看Docker官网的图解。

    容器

    容器是应用层的抽象,它将代码和依赖关系打包在一起。多个容器可以在同一台机器上运行,并与其他容器共享操作系统内核,每个容器在用户空间中作为独立进程运行。容器占用的空间比VM少(容器映像的大小通常为几十MB),可以处理更多的应用程序,并且需要更少的VM和操作系统。

    虚拟机

    虚拟机(VM)是物理硬件的抽象,将一台服务器转变为多台服务器。管理程序允许多台VM在单台机器上运行。每个VM都包含操作系统的完整副本,应用程序,必要的二进制文件和库 - 占用数十GB。虚拟机也可能很慢启动。

    为什么要使用容器?

    首先建立在我们需要环境隔离的基础上。
    根据上面的介绍,可以看出虚拟机,是主机级虚拟化,完整的虚拟出一台计算机,然后在虚拟出来的机器上安装操作系统,做到环境隔离。想想我们的服务部署在虚拟机上是什么情况。

    虚拟机

    如上图所示,在宿主机中安装了系统,系统中安装了虚拟机,虚拟机虚拟出一台计算机,在虚拟计算机中安装完整的系统,再将服务部署在虚拟系统中。
    部署的服务受虚拟机的内核调度,虚拟机受主机的调度,多层及下主机资源产生了严重的浪费。
    如果要在一台机器上部署多个服务,还要环境隔离,那就需要有多个虚拟机,所需要的资源也就不言而喻。

    如果使用容器是什么样的呢?


    容器

    容器是在主机的操作系统中,隔离出单独的用户空间,每个都是单独的沙箱,环境互不影响。需要的系统资源也只是服务所需要的资源,减少了虚拟主机的资源开销。

    相关文章

      网友评论

          本文标题:Docker容器技术----什么是容器?

          本文链接:https://www.haomeiwen.com/subject/gssrvqtx.html