一、Docker概述
容器背景
随着云计算和DevOps生态圈的蓬勃发展,产生了大量优秀的系统和软件。软件开发人员可以自由选择各种软件应用环境。但同时带来的问题就是需要维护一个非常庞大的开发、测试、预上线和生产环境。面对这种情况,Docker容器技术横空出世、提供了简单、灵活、高效的解决方案,不需要过多地改变现有的使用习惯,就可以和已有的工具进行整合。因此,掌握Docker 相关技术也是途径云计算的必经之路。
Docker是在Linux容器里运行应用的开源容器管理工具,可以理解为轻量级的“虚拟机”.它诞生于2013年初,最初是DotCloud公司内部商业版项目,后来更换架构师,此架构师将Docker进行了开源,导致Docker使用人员增多。基于Google公司推出的 Go (Golang)语言开发。该项目后来加入了Linux基金会,遵从了Apache 2.0协议进行推广,项目代码在GitHub ( https://github.com/docker)上进行维护。
Docker自开源后受到广泛的业内人士及社区的关注,以至于DotCloud公司后来都改名DockerInc。RedHat系列系统从RHEL6.5版本开始支持 Docker; Google也在其 PaaS产品中广泛应用。
官方网站:https://www.docker.com/
Docker的 Logo设计为蓝色鲸鱼,拖着许多集装箱。鲸鱼可以看做宿主机,而集装箱可以理解为实现应用相互隔离的容器,每个集装箱中都包含自己的应用程序。正如Docker的设计宗旨:Build、Ship and Run Any App、Anywhere,即通过对应用组件的封装、发布、部署、运行等生命周期的管理、达到应用组件级别的“一次封装,到处运行”的目的。这里的组件,既可以是一个应用,也可以是一套服
务,甚至是一个完整的操作系统。
Docker项目的目标是实现轻量级的操作系统虚拟化解决方案。Docker在Linux原有的LXC技术的基础上进行二次封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker的容器
就像操作一个快速轻量级的虚拟机一样简单。相同的容器类软件还有很多。
容器对比传统的虚拟化
传统虚拟化技术结构中底层是服务器硬件,硬件上运行着宿主机的操作系统兼虚拟化平台,通过在虚拟化出硬件设备上部署操作系统,在操作系统之上运行应用服务。而虚拟化出硬件中的操作系统将占用大量的服务器硬件资源浪费。
容器技术技术结构中底层硬件上运行宿主机操作系统,在宿主机操作系统上运行Docker引擎,无需虚拟化硬件,也不用部署操作系统,而是直接运行容器,提供所需的应用服务隔离环境,极大的提高了资源利用率。
作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。
Docker容器的启动可以在秒级实现,相比传统的虚拟机方式要快很多。Docker核心解决的问题是利用容器来实现类似VM的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源,所以Docker容器除了运行其中的应用之外,基本不消耗额外的系统资源,从而保证应用性能的同时,减小系统开销,使得在一台主机上同时运行数千个Docker容器成为可能; Docker 操作方便,还可以通
过Dockerfile,配置文件支持灵活的自动化创建Docker镜像。
Docker之所以拥有众多优势,与操作系统虚拟化自身的特点是分不开的,传统虚拟化需要有额外的虚拟机管理程序和虚拟机操作系统层,而Docker容器是直接在操作系统层面之上实现的虚拟化。
Docker的使用场景
Docker的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的
容器。通过这种容器打包应用程序,意味着简化了重新部署、调试这些琐碎的重复工作,极大的提高了工作效率。例如:项目从腾讯云迁移阿里云,如果采用了Docker容器技术,迁移只需要在新的云服务器上启动项目需要的容器即可。
Docker的优点
1、快速的交付和部署
对(DevOps)人员来说,最希望的就是项目环境一次创建或配置,可以在任意地方正常运行。开发者可以使用一个标准的镜像来构建一套项目开发容器,代码开发完成之后,运维人员可以直接此容器打包迁移。Docker可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其
他成员更容易理解应用程序是如何创建和工作的。Docker将会大量地节约开发、测试、部署的时间。
2、更高效的虚拟化-
Docker 容器的运行不需要额外的管理系统支持,它是内核级的虚拟化,并且容器调用的是宿主机的bin和 lib。因此可以实现更高的性能和效率。
3、更轻松的迁移和扩展
Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个平台。
4、简单的管理
使用Docker 只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。
Docker的核心概念
1、镜像(Image)
镜像是创建容器的基础,镜像类似传统虚拟机的快照,可以理解为是一个面向Docker容器引擎的只读模板。比如:一个镜像可以包含一个完整的 CentOS操作系统环境,里面仅安装了Apache的应用程
序(称之为Apache 镜像)或用户需要的其它应用程序。
Docker提供了一个很简单的机制来创建镜像或者更新现有的镜像(堆叠),用户甚至可以直接从其
他人那里获取一个已经做好的镜像来直接使用。
2、容器( Container)
容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。多个容器之间都是相互隔离的、
保证了应用平台的安全性。可以把容器看做是一个正在运行的简易版的 Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的一个或一组应用程序。Docker容器用来运行和隔离应用地方。
3、仓库(Repository)
仓库是集中存放镜像的地方。通常会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签( tag)。
仓库分为公开仓库(Public)和私有仓库( Private)两种形式。最大的公开仓库是DockerHub
(https://hub.docker.com/),存放了数量庞大的官方镜像供用户下载。国内的公开仓库有Docker Pool
等,可以提供大陆用户更稳定快速的访问。当然,用户也可以在本地网络内创建一个私有仓库。当用
户创建了自己的镜像之后就可以使用push命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pul下来就可以了。
docker的基本概念
最新推荐文章于 2022-05-13 14:30:08 发布