第一章 初识Docker

1.1什么是Docker

Docker开源项目

Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotCloud公司。Docker自开源后受到广泛的关注和讨论,目前已有多个相关项目,逐渐形成了围绕Docker的生态体系。dotCloud公司后来也改名为Docker Inc,专注于Docker相关技术和产品的开发。

Docker项目目前已加入了Linux基金会,遵循Apache 2.0协议,全部开源代码均在https://github.com/docker/docker上进行维护。在最近一次Linux基金会的调查中,Docker是仅次于OpenStack的最受欢迎的云计算开源项目。

现在主流的Linux操作系统都已经支持Docker。例如,Redhat RHEL 6.5/ CentOS 6.5往上的操作系统、Ubuntu 14.04操作系统,都已经默认带有Docker软件包。Google公司宣称在其PaaS(Platformas a Service)平台及服务产品中广泛应用了Docker。微软公司宣布和 Docker公司合作,以加强其云平台Azure对Docker的支持。公有云提供商亚马逊近期也推出了AWS EC2 Container,提供对Docker的支持。

Docker的主要目标是“Build, Ship and Run Any App, Anywhere”,即通过对应用组件的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)等生命周期的管理,达到应用组件级别的“一次封装,到处运行”。这里的应用组件,既可以是一个Web应用,也可以是一套数据库服务,甚至是一个操作系统或编译器。

Docker基于Linux的多项开源技术提供了高效、敏捷和轻量级的容器方案,并且支持在多种主流云平台(PaaS)和本地系统上部署。可以说Docker为应用的开发和部署提供了“一站式”的解决方案。

Linux容器技术

Docker引擎的基础是Linux容器(Linux Containers,LXC)技术。IBM DeveloperWorks上给出了关于容器技术的准确描述:

容器有效地将由单个操作系统管理的资源划分到孤立的组中,以便更好地在孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译。容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制。此外,也避免了准虚拟化(paravirtualization)和系统调用替换中的复杂性。

Linux容器其实不是一个全新的概念。最早的容器技术可以追溯到1982年Unix系列操作系统上的chroot工具(直到今天,主流的Unix、Linux操作系统仍然支持和带有该工具)。早期的容器实现技术包括Sun Solaris操作系统上的Solaris Containers(2004年发布),FreeBSD操作系统上的FreeBSD jail(2000年左右出现),以及GNU/Linux上的Linux-VServer(http://linux-vserver.org/)(2001年10月)和OpenVZ (http://openvz.org)(2005年)。

虽然这些技术经过多年的演化已经十分成熟,但是由于种种原因,这些容器技术并没有被集成到主流的Linux内核中,使用起来并不方便。例如,如果用户要使用OpenVZ技术,就需要先给操作系统打上特定的内核补丁方可使用。

后来LXC项目借鉴了前人成熟的容器设计理念,并基于一系列新的内核特性实现了更具扩展性的虚拟化容器方案。更加关键的是,LXC被集成到了主流Linux内核中,进而成为Linux系统轻量级容器技术的事实标准。

从Linux容器到Docker

在LXC的基础上,Docker进一步优化了容器的使用体验。Docker提供了各种容器管理工具(如分发、版本、移植等)让用户无需关注底层的操作,可以简单明了地管理和使用容器。用户操作Docker容器就像操作一个轻量级的虚拟机那样简单。

读者可以简单地将Docker容器理解为一种沙盒(Sandbox)。每个容器内运行一个应用,不同的容器相互隔离,容器之间也可以建立通信机制。容器的创建和停止都十分快速,容器自身对资源的需求也十分有限,远远低于虚拟机。很多时候,甚至直接把容器当作应用本身也没有任何问题。

有理由相信,随着Docker技术的进一步成熟,它将成为更受欢迎的容器虚拟化技术实现,得到更广泛的应用。

时间: 2024-10-09 20:38:42

第一章 初识Docker的相关文章

《C语言启蒙》--第一章 初识c语言

阅读书籍的名称  <c primer> c语言的启蒙书籍. 第一章:初识c语言 1背景: c 语言很牛逼,可以跨平台,必须得会. 2.计算机的工作原理: 3.编译的过程 我们写完的代码称之为源代码,程序运行的实质是对01的不同位置的变化,而源代码需要转化成cpu可以执行的指令,也就是机器码,这个过程就是编译的过程,需要编译器来帮助我们来完成,c语言的文件中你肯定会用到各种库,这就需要c可以引入操作系统中的库文件,同时文件的启动需要启动代码,这些都需要引入,这个引入的工具就是连接器,最终将各个文

Java 第一章 初识Java

第一章笔记 什么是计算机程序:算机为完成某些功能生产的一系列有序指令集合 Java技术包括: java SE:标准版 java EE:企业版 Java ME:移动版 开发Java程序步骤:1.编写 2.编译 3.运行 1.编写: a.大括号成对出现 b.class后面的单词要与文件名一致.(!!包括大小写) c.java严格区分大小写 2.编译: 命令:javac 文件名.java 产生结果:产生.class为后缀名的文件(此文件,看不懂,乱码) (注意!!!如果代码修改后,需重新编译后运行)

Windows Forms编程实战学习:第一章 初识Windows Forms

初识Windows Forms 1,用C#编程 using System.Windows.Forms; ? [assembly: System.Reflection.AssemblyVersion("1.0")] ? namespace MyNamespace { public class MyForm : Form { public MyForm() { this.Text = "Hello Form"; } [System.STAThread] public s

第一章 初识Java

1 Java概述 1.1. 什么是程序 程序,源于日常生活,通常指完成某些事性的一种既定方式和过程.可以将程序看成对一系列动作的执行过程的描述 计算机程序:是为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合. 1.2 如何编制程序 人与人交流有自己的语言,人与计算机就要使用计算机语言 人类有多种自己的语言,比如 中文.英文.德文.同样的计算机语言也有很多,它们都有自己的语法规则 通常来讲,编制程序时选用的语言,是有利用人类读写的语言,俗称高级语言.但计算机只能识别0和1代码组成

第一章 初识shell程序

1.执行shell脚本的三种方法: 1.1 使文件具有可执行权限,直接运行文件. 1.1.1 给文件加上x权限 1.1.2 ./test.sh 1.2 直接调用命令解释器执行程序 1.2.1 source test.sh  或者 . test.sh   点后边有空格 1.3 使用source执行文件 这种方式在执行脚本时,不会创建子进程,直接在父进程中执行.而上面两种都会创建子进程执行脚本. 在脚本执行过程中,并没有进程创建和消亡.当需要修改当前shell本身变量时,使用source命令. 2.

Oracle第一章——初识Oracle

(以下内容使用的系统和版本为Windows7系统和Oracle11g,Windows其他版本和Oracle其他版本基本差不多.) 一.Oracle简介 简介:Oracle是一个关系型数据库管理系统,是Oracle公司的核心产品. 主要特点: 1.支持多用户.大事务量的事务处理 2.在保持数据安全性和完整性方面性能优越 3.支持分布式数据处理 4.具有可移植性 二.Oracle基本概念 1.数据库 Oracle并不是数据库,而是数据库管理系统,数据库字面上理解,就是储存数据的仓库,而Oracle就

第一章 初识java:输出多行的语句写法

1 public class onesixtwo{ 2 public static void main(String[] args){ 3 System.out.println("-----------"); 4 System.out.println("| 我要学会|"); 5 System.out.println("| Java语言|"); 6 System.out.println("-----------"); 7 } 8

[hadoop读书笔记] 第一章 初识 Hadoop

P3-P4: 目前遇见的问题很简单:硬盘容量不断提升,1TB的已成为主流,然而数据传输速度从1990年的4.4MB/s仅上升到当前约100MB/s 读取一个1TB的硬盘数据需要耗时至少2.5个小时.写入数据则会消耗更多时间.解决方法是从多个硬盘上读取,试想,若当前有100个盘,每个盘存储1%数据,则并行读取仅需2minutes则可读取完所有的数据. 与此同时,并行读写数据带来了几个问题: 1.某个硬件故障 - 采用数据备份机制 2.分析任务需要所有节点共同完成,结果正确性  - MapReduc

Lucene in action 第一章 初识Lucene

1.3 搜索程序组件 Lucene提供搜索程序的最核心模块:索引模块和搜索模块的类库. Solr基于Lucene,提供更丰富的UI和API可以直接部署和使用 下图为搜索程序的基本框架.中间黑体部分为Lucene完成的功能,也是搜索引擎的最核心部分. 搜索引擎评价: 满足基本功能:搜索结果正确显示 搜索回复时间 扩展功能:语法纠错,关键词高亮等 1.3.1索引组件 搜索引擎原理: 朴素思想:顺序搜索 问题:速度太慢 解决:对文本内容建立索引,通过索引返回结果 1.获取内容: 网页内容:爬虫工具 文