对于Docker的概念理解以及优势分析

在Stack Overflow调查中,开发人员将Docker排在“最受欢迎的平台”第一名,第二名“最想要的平台”和第三名“正在使用的平台”中。

那么笔者开始问自己,什么是docker,为什么那么多开发人员要选择Docker,或者说Docker会带来哪些其他产品所带不来的东西?因此笔者开始寻找一些有关Docker的信息,并对其进行整合与归纳。

Docker是一组平台即服务(PaaS)产品,它使用OS级虚拟化来以称为容器的软件包交付软件。容器彼此隔离,并将它们自己的软件,库和配置文件捆绑在一起;他们可以通过定义明确的渠道相互交流。所有容器都由单个操作系统内核运行,因此使用的资源少于虚拟机。该服务有免费和高级两种。托管容器的软件称为Docker Engine。它最初于2013年启动,由Docker,Inc.开发。

Docker是使使用容器更轻松地创建,部署和运行应用程序的一种工具。容器使开发人员可以将应用程序所需的所有部分(如库和其他依赖项)打包在一起,并将其作为一个包进行部署。这样,借助容器,开发人员可以放心,该应用程序可以在任何其他Linux机器上运行,而不管该机器是否可能具有的用于与编写和测试代码的机器不同的任何自定义设置。在某种程度上,Docker有点像虚拟机。但是,与虚拟机不同,Docker无需创建整个虚拟操作系统,而是允许应用程序使用与其所运行的系统相同的Linux内核,并且仅要求应用程序随附主机上尚未运行的组件。这样可以显着提高性能,并减小应用程序的大小。

重要的是,Docker是开源的。这意味着任何人都可以为Docker做出贡献,并扩展Docker以满足他们自己的需求,如果他们需要开箱即用的其他功能。Docker是一种旨在使开发人员和系统管理员受益的工具,使其成为许多开发人员和运营工具链的一部分。对于开发人员来说,这意味着他们可以专注于编写代码,而不必担心最终将在其上运行的系统。它还允许他们使用已经设计为在Docker容器中运行的数千个程序之一作为其应用程序的一部分,从而抢先一步。对于运维人员而言,Docker占用空间小且开销较低,因此可提供灵活性并可能减少所需的系统数量。

那么正如我们之前提到的,Docker是一组平台即服务产品(PaaS),那么PaaS具体是什么东西呢?

平台即服务(PaaS)是一种云计算产品,服务提供商可以在其中为客户提供平台,从而使客户能够开发,运行和管理业务应用程序,而无需构建和维护此类软件的基础架构开发过程通常需要,这对开发者和运营者来说,具有高效性和便捷性的特点。

既然Docker 容器是一个开源的应用容器引擎,让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何安装了docker引擎的服务器上,也可以实现虚拟化,那么容器的概念又是什么呢?

这里是容器比较官方的一种解释
容器就是将软件打包成标准化单元,以用于开发、交付和部署。
1.容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。
2.容器化软件适用于基于Linux和Windows的应用,在任何环境中都能够始终如一地运行。
3.容器赋予了软件独立性,使其免受外在环境差异(例如,开发和预演环境的差异)的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突。

所以容器虚拟化的是操作系统而不是硬件,容器之间是共享同一套操作系统资源的。虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统。因此容器的隔离级别会稍低一些。

Docker如此受欢迎,那么用的是什么语言进行开发和实现的呢?

Docker使用Google公司推出的Go语言进行开发实现,基于Linux内核的cgroup,namespace,以及AUFS类的UnionFS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。 由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。Docke最初实现是基于LXC。LXC是Linux Container的缩写。 Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源。

与其他同类产品相比,Docker又有哪些特点呢,或者说有什么优势呢?

  1. 轻量,在一台机器上运行的多个Docker容器可以共享这台机器的操作系统内核;它们能够迅速启动,只需占用很少的计算和内存资源。镜像是通过文件系统层进行构造的,并共享一些公共文件。这样就能尽量降低磁盘用量,并能更快地下载镜像。
  2. 标准,Docker容器基于开放式标准,能够在所有主流Linux版本、Microsoft Windows以及包括VM、裸机服务器和云在内的任何基础设施上运行。
  3. 安全,Docker赋予应用的隔离性不仅限于彼此隔离,还独立于底层的基础设施。Docker默认提供最强的隔离,因此应用出现问题,也只是单个容器的问题,而不会波及到整台机器。

那么Docker与虚拟机之间又有什么关系呢?

容器和虚拟机具有相似的资源隔离和分配优势,但功能有所不同,因为容器虚拟化的是操作系统,而不是硬件,因此容器更容易移植,效率也更高。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。Docker守护进程可以直接与主操作系统进行通信,为各个Docker容器分配资源;它还可以将容器与主操作系统隔离,并将各个容器互相隔离。虚拟机启动需要数分钟,而Docker容器可以在数毫秒内启动。由于没有臃肿的从操作系统,Docker可以节省大量的磁盘空间以及其他系统资源。

那么往细里说,Docker又有哪些基本概念呢?

Docker包括三个基本概念:镜像(Image),容器(Container),仓库(Repository)

镜像(Image)类似于虚拟机的镜像,可以将他理解为一个面向Docker引擎的只读模板,包含了文件系统。镜像是创建Docker容器的基础,通过版本管理和增量的文件系统,Docker提供了一套十分简单的机制来创建和更新现有的镜像。总的来说,就是应用软件的运行需要一个平台或者说是一个环境,而恰恰Docker提供了这个环境。

容器(Container)是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这些容器都是相互隔离、互不可见的。也就是说容器类似于一个沙箱,Docker利用容器来运行和隔离应用。

Docker仓库(Repository)类似与代码仓库,是Docker集中存放镜像文件的场所。注册服务器是存放仓库的地方,其上往往存放着多个仓库。每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签(tag)来进行区分。Docker仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

总结:Docker是一个受欢迎程度很高的开放源代码软件项目,让应用程序部署在软件货柜下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制。它具有着启动快,资源占用小 , 资源利用高,快速构建标准化运行环境,创建分布式应用程序时快速交付和部署,更轻松的迁移和扩展,更简单的更新管理等特点。并且其具有秒级启动,对资源占用小,用户学习速度快, 学习费用低等优势。并且在工作效率上Docker通过 Dockerfile 配置文件来灵活的自动创建和部署镜像 & 容器 , 提高工作效率。除了运行其中应用外 , 基本不消耗其他系统资源 , 保证应用性能同时 ,尽量减小系统。并且容器是完全使用沙箱机制,相互之间不会有任何接口。不会因为机器的不同而导致不能运行的情况。

参考:
https://en.wikipedia.org/wiki/Docker_(software)
https://www.docker.com/?utm_source=google&utm_medium=cpc&utm_campaign=dockerhomepage&utm_content=namer&utm_term=dockerhomepage&utm_budget=growth&gclid=EAIaIQobChMI0aKa5ZaI6QIVA1YMCh1DbgFbEAAYASAAEgJnrvD_BwE
https://opensource.com/resources/what-docker
https://www.infoworld.com/article/3223434/what-is-paas-software-development-in-the-cloud.html
http://dockone.io/article/6051
http://www.xiuchuang.com/question/11777.html
https://www.jianshu.com/p/50f48eb25215
http://www.imooc.com/wenda/detail/481548
https://www.leiue.com/what-is-docker
https://blog.csdn.net/weixin_44046696/article/details/85416883

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值