Docker笔记1:Docker 的介绍

 

 目  录linux

 

 

一、Docker 简介

 

    Docker 提供了一个能够运行你的应用程序的封套(envelope),或者说容器。它本来是 dotCloud 启动的一个业余项目,并在前些时候开源了。它吸引了大量的关注和讨论,致使 dotCloud 把它重命名到 Docker Inc。它最初是用 Go 语言编写的,它就至关因而加在 LXC(LinuX Containers,linux 容器)上的管道,容许开发者在更高层次的概念上工做。
    Docker 扩展了 Linux 容器(Linux Containers),或着说 LXC,经过一个高层次的 API 为进程单独提供了一个轻量级的虚拟环境。Docker 利用了 LXC, cgroups 和 Linux 本身的内核。和传统的虚拟机不一样的是,一个 Docker 容器并不包含一个单独的操做系统,而是基于已有的基础设施中操做系统提供的功能来运行的。
 
    Docker相似虚拟机的概念,可是与虚拟化技术的不一样点在于下面几点:
  1. 虚拟化技术依赖物理CPU和内存,是硬件级别的;而docker构建在操做系统上,利用操做系统的containerization技术,因此docker甚至能够在虚拟机上运行。
  2. 虚拟化系统通常都是指操做系统镜像,比较复杂,称为“系统”;而docker开源并且轻量,称为“容器”,单个容器适合部署少许应用,好比部署一个redis、一个memcached。
  3. 传统的虚拟化技术使用快照来保存状态;而docker在保存状态上不只更为轻便和低成本,并且引入了相似源代码管理机制,将容器的快照历史版本一一记录,切换成本很低。
  4. 传统的虚拟化技术在构建系统的时候较为复杂,须要大量的人力;而docker能够经过Dockfile来构建整个容器,重启和构建速度很快。更重要的是Dockfile能够手动编写,这样应用程序开发人员能够经过发布Dockfile来指导系统环境和依赖,这样对于持续交付十分有利。
  5. Dockerfile能够基于已经构建好的容器镜像,建立新容器。Dockerfile能够经过社区分享和下载,有利于该技术的推广。
 
    Docker 会像一个可移植的容器引擎那样工做。它把应用程序及全部程序的依赖环境打包到一个虚拟容器中,这个虚拟容器能够运行在任何一种 Linux 服务器上。这大大地提升了程序运行的灵活性和可移植性,不管需不须要许可、是在公共云仍是私密云、是否是裸机环境等等。
    Docker也是一个云计算平台,它利用Linux的LXC、AUFU、Go语言、cgroup实现了资源的独立,能够很轻松的实现文件、资源、网络等隔离,其最终的目标是实现相似PaaS平台的应用隔离。
 
    Docker 由下面这些组成:
  1. Docker 服务器守护程序(server daemon),用于管理全部的容器。
  2. Docker 命令行客户端,用于控制服务器守护程序。
  3. Docker 镜像:查找和浏览 docker 容器镜像。
 

    Docker是经过内核虚拟化技术(namespaces及cgroups cpu、内存、磁盘IO等)来提供容器的资源隔离与安全保障等。因为Docker经过操做系统层的虚拟化实现隔离,因此Docker容器在运行时,不须要相似虚拟机(VM)额外的操做系统开销,提供资源利用率。web

    Docker 是dotCloud也就说如今的Docker公司在2013年3月发布的,一开始是基于LXC项目来建立单个应用程序容器。Docker如今已经开发了他们着急的直接使用核心namesapces和cgroup的工具:libcontainer。redis

 

    Docker 的主要目标是“Build,Ship and Run any App,Anywhere”,构建、运输、到处运行。docker

    一次构建,到处运行。shell

    Docker 是一种软件的打包技术。数据库

 

    构建:作一个 docker 镜像安全

    运输:docker pull服务器

    运行:启动一个容器网络

    每个容器, 它都有本身的文件系统 rootfs。memcached

 

    kvm 解决了硬盘和操做系统之间的依赖

    kvm 独立的虚拟磁盘,xml配置文件

 

    Docker 解决了软件和操做系统环境之间的依赖,可以让独立服务或应用程序在不通的环境中,获得相同的运行结果。

    Docker 镜像有本身的文件系统。

    Docker 容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序能够在几乎任何地方以相同的方式运行。开发人员在句子笔记本上建立并测试号的容器,无需任何修改就可以在生产系统的虚拟机、物理服务器或公有云主机上运行。

 


 

二、Docker 特性

    文件系统隔离:每一个进程容器运行在彻底独立的根文件系统里。
    资源隔离:可使用cgroup为每一个进程容器分配不一样的系统资源,例如CPU和内存。
    网络隔离:每一个进程容器运行在本身的网络命名空间里,拥有本身的虚拟接口和IP地址。
    写时复制:采用写时复制方式建立根文件系统,这让部署变得极其快捷,而且节省内存和硬盘空间。
    日志记录:Docker将会收集和记录每一个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。
    变动管理:容器文件系统的变动能够提交到新的映像中,并可重复使用以建立更多的容器。无需使用模板或手动配置。
    交互式Shell:Docker能够分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell。
 
 

三、Docker 的应用场景

  • Web 应用的自动化打包和发布。
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其余的后台应用。
  • 从头编译或者扩展示有的 OpenShift 或 Cloud Foundry 平台来搭建本身的 PaaS 环境。
 

四、Docker 优势

    1. 简化程序
        Docker 让开发者能够打包他们的应用以及依赖包到一个可移植的容器中,而后发布到任何流行的 Linux 机器上,即可以实现虚拟化。Docker改变了虚拟化的方式,使开发者能够直接将本身的成果放入Docker中进行管理。方便快捷已是 Docker的最大优点,过去须要用数天乃至数周的    任务,在Docker容器的处理下,只须要数秒就能完成。
 
    2.  避免选择恐惧症
        若是你有选择恐惧症,仍是资深患者。那么你可使用 Docker 打包你的纠结!好比 Docker 镜像;Docker 镜像中包含了运行环境和配置,因此 Docker 能够简化部署多种应用实例工做。好比 Web 应用、后台应用、数据库应用、大数据应用好比 Hadoop 集群、消息队列等等均可以打包成一个镜像部署。
 
    3. 节省开支
        一方面,云计算时代到来,使开发者没必要为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思惟定势。Docker 与云的结合,让云空间获得更充分的利用。不只解决了硬件管理的问题,也改变了虚拟化的方式。
相关文章
相关标签/搜索