认识Docker

目录安全

认识Docker服务器

容器网络

什么是容器?架构

容器与虚拟机之间的区别:运维

容器究竟解决了什么问题?分布式

容器的优势:微服务

容器的缺点:工具

容器的分类:性能

Docker技术云计算

什么是Docker?

Docker到底是什么?

Docker的架构与组成

Docker中的基本概念:

为何使用Docker?

Docker的应用场景

Docker能够解决那些问题?

Docker的应用成本


认识Docker

容器

什么是容器?

所谓容器,是一种轻量级的操做系统级虚拟化,可让用户在一个资源隔离的进程中运行应用及其依赖项.运行应用程序所必需的的组件都将打包成一个镜像并能够复用.执行镜像时,它运行在一个隔离环境中,而且不会共享宿主机的内存,CPU以及磁盘,这就保证了容器内的进程不能监控容器外的任何进程.

容器与虚拟机之间的区别:

容器究竟解决了什么问题?

容器很是适合于在当前云计算环境快速地迁移部署应用系统.

容器的优势:

  1. 敏捷度高.部署一个容器化的应用系统,能够按分钟,甚至秒级来计算.
  2. 提升生产力.容器经过接触跨服务的依赖和冲突提升了开发者的生产力.每一个容器均可以看做是一个不一样的微服务,所以能够独立升级,而不用担忧与其余服务的同步问题.
  3. 版本控制.每一个容器的镜像都有版本控制,能够跟踪不一样版本的容器,监控版本之间的差别.
  4. 运行环境可移植.容器封装了全部运行应用程序所必需的的相关的细节,这就使得镜像从一个环境移植到另外一个环境更加灵活.
  5. 标准化.大多数容器基于开放的标准,能够运行在全部主流的平台上.
  6. 安全.容器之间的进程是相互隔离的,其中的基础设施亦是如此.这样其中一个容器的升级或者变化不会影响其余容器.

容器的缺点:

  1. 复杂性增长.随着容器及应用数量的增长,同时也伴随着复杂性的增长.能够借助Kubernetes和Mesos等工具来管理具备必定规模数量的容器.
  2. 原生Linux支持.大多数容器技术都是基于Linux的(如Docker是基于Linux容器LXC技术的),在Windows环境中运行容器略显笨拙.
  3. 不成熟.容器技术是相对比较新的技术,开发者的可用资源是有限的,若是某个开发者陷入某个问题,可能须要花些时间才能解决问题.

容器的分类:

大体来讲,容器能够分为操做系统容器应用容器两大类型.(也有将容器分为操做系统容器,运行环境容器和应用系统容器三大类的)

操做系统容器是操做系统层的虚拟化,也能够看做是一种计算机虚拟化技术.这种虚拟化技术将操做系统的内核虚拟化,能够容许多个独立用户空间的存在,而不是只有一个.从运行在容器中 应用程序的角度来看,这些容器的实例就如同真正的计算机.当须要配置大量具备相同配置的操做系统时,操做系统容器就会很是有用,所以,容器有助于建立模板,可用于建立与另外一个操做系统相似风格的容器.

应用容器是指应用程序的虚拟化,就是从其所执行的底层操做系统封装计算机程序的软件技术.应用容器旨在做为单个进程进行打包和运行服务,而在操做系统容器中,能够运行多个服务和进程.

Docker技术

什么是Docker?

Docker就是一个应用容器引擎,经过Docker,能够很是方便地对容器进行管理,Docker基于Go语言开发,而且听从Apache2.0开源协议.

Docker彻底使用沙箱机制,容器之间不会有任何的接口.(沙箱是一种按照安全策略限制程序行为的执行环境)

Docker如今已经逐渐成为轻量级虚拟化的代名词,成为云应用部署的事实上的标准.

Docker到底是什么?

对开发人员来讲,Java以前的开发语言,例如C或者C++都是严重依赖于平台的.一样的代码,在不一样的平台下,须要从新编译才能够运行.为了解决这个问题Java诞生了,开发人员只要将Java代码编译成能够在Java虚拟机中执行的目标代码就能够了,与平台有关的具体细节交给Java虚拟机去处理就好了,开发者不用关心这个问题.

此外,开发人员在开发应用程序的时候,总会存在版本迭代的问题,为了管理不一样的版本,人们开发出了Git,经过Git,开发人员能够任意地在不一样版本之间切换,同时也解决了协同开发人员之间的代码冲突问题.

相似的,在部署应用系统的时候,会存在这组件之间的依赖问题,而系统所依赖的其余组件必然存在着与具体的平台兼容的问题.在每次迁移系统时都须要逐一处理这些依赖组件.而Docker提供了相似于Java虚拟机的功能,相对于应用系统而言,Docker屏蔽了与平台相关的具体细节.Docker像一个集装箱,把应用系统及其依赖组件包装起来.在迁移系统时,只要把这个"集装箱"搬过去便可,而没必要处理"集装箱"里面的具体细节.

Docker这个功能特性的实现,在于开发人员为不一样平台提供了相对应的镜像文件,镜像文件中包含了容器的内容,即应用系统以及依赖组件.既然是文件,必然也存在着版本的问题,Docker一样提供了基于Git的版本控制机制.

Docker的架构与组成

Docker是一个典型的C/S架构.

经过Docker客户端能够与Docker服务器进行交互,而Docker服务器则负责构建,运行和分发Docker镜像.

Docker中的基本概念:

镜像:

镜像Image是Docker中很是重要的一个概念.简单地讲,镜像就是容器的模板.对于普通用户来讲,镜像文件一般都是只读的.镜像至关于构建和打包阶段

容器:

容器是独立运行的一个或者一组应用,是从镜像建立的运行实例.容器是可读可写的.容器至关于启动和执行阶段.

能够把容器看做是一个简易版的Linux环境,包括root用户权限,进程空间,用户空间和网络空间等以及运行在其中的应用程序.

仓库:

仓库是集中存放镜像文件的地方.仓库分为公有仓库和私有仓库两种形式,如Docker Hub是最大的公有仓库.

有时候会把仓库和仓库注册服务器混为一谈,并不严格区分.实际上,仓库注册服务器上每每存放着多个仓库,每一个仓库中又包含了多个镜像,每一个镜像都有不一样的标签.

为何使用Docker?

Docker的迅速发展,与云计算技术是密不可分的.

Docker的应用场景

Docker用于提供轻量级的虚拟化服务.它的应用场景很是普遍,主要有如下几种:

  1. 简化配置:Docker将应用程序代码,运行环境以及配置进行打包,用户在部署时,只要以该镜像为模板,建立容器便可.实际上,这实现了应用环境和底层环境的解耦.
  2. 便于实现开发环境和生产环境的统一:开发人员可让每一个服务运行在单独的容器中,这样能模拟生产环境的分布式部署.
  3. 应用隔离:随着硬件技术的发展,在一台机器上运行单个应用是很是罕见的了.为了使得各个应用之间不相互影响,须要解决各个应用系统之间的隔离问题,而Docker能轻松解决这个问题.
  4. 云计算环境:经过建立Docker容器,能够很好地解决云计算环境中多租户的需求,快速灵活地为租户提供服务.
  5. 快速部署:Docker能够快速地部署各类应用系统.

Docker能够解决那些问题?

简化部署过程.

节省开支.云计算时代的到来,使开发者没必要为了追求性能而配置高额的硬件,Docker改变了高性能必然高价格的思惟定势.Docker与云计算的结合,不只解决了硬件管理的问题,也改变了虚拟化的方式.

Docker的应用成本

Docker的普遍应用极大的下降了IT设施的运维成本.主要有:

  • 减小部署的时间成本和人力成本.
  • 标准化应用的发布,能够跨平台和跨主机使用.
  • 节约启动的时间.
  • 节约存储成本.