docker 不包含依赖 打包_Docker介绍

Docker是什么?

简单来说,Docker平台是关于使用容器来使得创建、部署、运营变得更简单的一切相关内容。容器可以让开发者将一个应用程序打包,里面包含了必须的部分,如应用程序依赖的库和其他元素,以包的形式发布出去。通过将app和相关的元素添加到容器内,开发者确保这个apps能够运行在任何Linux机器上,不管机器有怎样的默认配置,或者这个机器与编写测试代码的机器有多大区别。这点对开发者而言很有用,因为它使得整个生命周期内对app操作变得很容易。

fb3fe356843dc8d3870e88eae8669b63.png

Docker是一种类似虚拟机的东西,但它不会创建一个完整的操作系统(OS),它让应用程序具有这个优势,应用程序运行在一个系统上就如同它运行在Linux内核上一样。那样的话,应用程序只用添加不在宿主机上的东西而不是一整个OS。这就意味着,apps更小,比那些依赖系统的apps性能也更好。它也有其他一些好处。

对开发者和系统管理员而言,Docker是一个分布式应用的开放平台。它为基础设施不可知的CaaS模型提供了一个集成的套件。有了Docker,IT运营团队能够对基础设施资源和基本应用程序内容提供保护,管理,而开发者可以以一种自助的形式编译和发布他们的应用。

关键的优势

开源

Docker的另一个关键因素是,它是完全开源的。这就意味着任何人都能给平台提出意见,当Docker本身不包含他们需要的特性时,可以适配并扩展它以满足他们自己的需求。所有这些使得对开发者和系统管理者而言,Docker是非常方便的选择。

低开销

因为开发者不需要提供一个真实的虚拟环境一直到硬件级别,通过只创建运行时必要的库和OS部件,可以降低系统的开销。

敏捷

思路上,Docker是依赖速度和简单性来创建的。这也是它变得如此流行的部分原因。开发者现在能够非常简单地将软件和依赖元素打包到一个容器中。他们能使用任何编程语言,任何版本、任何工具,因为它们是一起打包到一个容器中,因而,事实上标准化了所有元素,同时也并未丢弃任何东西。

可移植性

Docker以一种全新方式使得应用程序容器变得完全可移植。开发者现在能够分发app从开发到测试到制作而又不破坏代码。机器环境的差异不会对打包进容器中的东西造成任何影响。制作中不需要改变app,这点对IT运营团队而言很有帮助,因为现在他们能够在数据中心之间移动apps而又避免供应商依赖。

控制

当apps在生命周期中移动时,Docker提供了对apps最大程度的控制,因为环境是标准化的。这也使得很容易回答在整个过程中有关安全性、管理型、和规模方面的问题。针对特定项目,IT团队可以定制需要的控制和灵活性级别来保持服务级别,性能和合规性。

它是怎么被创造的以及它是如何出现的?

过去apps以一种非常不同的方式开发。有许多私人数据中心运行买来的程序,数据中心由庞大的代码库控制,每年都要升级一次。随着云计算的开发和应用,一切都改变了。现在世界上的公司都依赖于软件去与他们的客户联系,软件选项变得越来越定制化。

随着软件变得更加复杂,服务,依赖性,基础设施,对获取app的终端状态提出了很多挑战。这就是Docker的来源。

在2013年,Docker被研发出来作为一种编译、分发、运行应用程序的方式,在所有使用容器的地方。软件容器是一种软件的标准单元,它不受代码和包含在代码内部的依赖关系的影响。这使得开发者和系统管理员能够处理在不同基础设施和不同环境下移动软件而无需任何修改的需求。

在2013年3月13日PyCon Lightning Talk – The future of Linux Containers大会上,Docker发布。Moby Dock,Docker吉祥物,几个月后被创造出来。同年9月,Docker和RedHat宣布联盟,引入了Fedora/RHEL兼容性。在2014年1月公司获得了1500万美元的B轮融资,同年8月Docker Engine1.2发布。2014年9月他们获得了4000万美元的C轮融资,在2014年12月31日,Docker已经拥有了1亿的容器下载量。在2015年4月,他们获得了9500万美元的D轮融资,拥有了3亿的容器下载量。

它是怎么工作的?

Docker是一种容器即服务(CaaS)。为了理解它是怎么工作的,首先要了解一个Linux容器是什么。

Linux容器

在一个通常的虚拟化环境中,虚拟机在系统管理程序(例如Xen, Hyper-V)的帮助下运行于物理机器之上。容器运行于操作系统内核之上的用户空间。每个容器都有自身队列的用户空间,在一个主机上可以运行多个不同容器。通过使用两种Linux内核特性:命名空间和控制组,一个主机中的容器能够彼此独立。

在Linux中有六个命名空间,它们允许容器包拥有自己的网络接口,IP地址,等等。容器使用的资源由控制组来管理,它可以允许你限制容器能够使用的CPU和存储资源数量。

Docker

Docker是一种容器引擎,它使用了Linux内核特性,使容器运行于OS之上,在容器中自动化app部署。它提供了一个轻量级环境来运行app代码,目的是创建一个更有效的工作流,当你在整个软件生命周期中移动app时。它运行于一个客户端-服务器架构。Docker Daemon负责与容器相关的所有动作,这个守护程序通过代理或REST APIs从Docker客户端获取命令。

容器从镜像中编译,这些镜像可以配置包含apps,作为创建容器的一个模板。它们组织成一层,镜像的每个变化会添加到它上面的一层。Docker镜像存储于Docker注册机中,开发者使用公用或私用的注册机去编译并在团队中共享镜像。Docker-hosted的注册机服务被称为DockerHub(Docker公共仓库),允许你从中心位置节点上传下载镜像。

一旦你有了镜像,你可以创建一个容器,它是镜像的一个可写层。镜像通知Docker容器包含什么内容,当容器加载后要运行什么进程和配置数据。一旦容器开始运行,你就可以管理它,与app交互,当你结束的时候停止并移除容器。这就使得运行app变得很容易,无需修改代码。

为什么开发者会在乎?

Docker在整个开发周期中对开发者很有帮助。它使得你可以在装有app和服务的本地容器上进行开发,然后集成到一个持续集成和部署工作流中。本质上,它使得开发者的开发过程更加简单。它特别有用处,基于以下原因:

更容易容量扩展

Docker使得保持工作负载高可移植性很容易。容器可以运行在开发者的本地主机,也能运行于物理或虚拟机器或云服务中。这就使得管理工作负载更简单,你可以近乎实时地用它来按比例增加或拆除app和服务。

更高的密度和更多工作负载

相对基于系统管理程序的虚拟机,Docker是一个轻量级和很划算的选择,能适应高密度环境。对小型和中级部署也很有用,在这类型的部署中你想要充分利用你已经拥有的资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值