目录安全
认识Docker服务器
容器网络
什么是容器?架构
容器究竟解决了什么问题?分布式
容器的优势:微服务
容器的缺点:工具
容器的分类:性能
Docker技术云计算
所谓容器,是一种轻量级的操做系统级虚拟化,可让用户在一个资源隔离的进程中运行应用及其依赖项.运行应用程序所必需的的组件都将打包成一个镜像并能够复用.执行镜像时,它运行在一个隔离环境中,而且不会共享宿主机的内存,CPU以及磁盘,这就保证了容器内的进程不能监控容器外的任何进程.
容器很是适合于在当前云计算环境快速地迁移和部署应用系统.
大体来讲,容器能够分为操做系统容器和应用容器两大类型.(也有将容器分为操做系统容器,运行环境容器和应用系统容器三大类的)
操做系统容器是操做系统层的虚拟化,也能够看做是一种计算机虚拟化技术.这种虚拟化技术将操做系统的内核虚拟化,能够容许多个独立用户空间的存在,而不是只有一个.从运行在容器中 应用程序的角度来看,这些容器的实例就如同真正的计算机.当须要配置大量具备相同配置的操做系统时,操做系统容器就会很是有用,所以,容器有助于建立模板,可用于建立与另外一个操做系统相似风格的容器.
应用容器是指应用程序的虚拟化,就是从其所执行的底层操做系统封装计算机程序的软件技术.应用容器旨在做为单个进程进行打包和运行服务,而在操做系统容器中,能够运行多个服务和进程.
Docker就是一个应用容器引擎,经过Docker,能够很是方便地对容器进行管理,Docker基于Go语言开发,而且听从Apache2.0开源协议.
Docker彻底使用沙箱机制,容器之间不会有任何的接口.(沙箱是一种按照安全策略限制程序行为的执行环境)
Docker如今已经逐渐成为轻量级虚拟化的代名词,成为云应用部署的事实上的标准.
对开发人员来讲,Java以前的开发语言,例如C或者C++都是严重依赖于平台的.一样的代码,在不一样的平台下,须要从新编译才能够运行.为了解决这个问题Java诞生了,开发人员只要将Java代码编译成能够在Java虚拟机中执行的目标代码就能够了,与平台有关的具体细节交给Java虚拟机去处理就好了,开发者不用关心这个问题.
此外,开发人员在开发应用程序的时候,总会存在版本迭代的问题,为了管理不一样的版本,人们开发出了Git,经过Git,开发人员能够任意地在不一样版本之间切换,同时也解决了协同开发人员之间的代码冲突问题.
相似的,在部署应用系统的时候,会存在这组件之间的依赖问题,而系统所依赖的其余组件必然存在着与具体的平台兼容的问题.在每次迁移系统时都须要逐一处理这些依赖组件.而Docker提供了相似于Java虚拟机的功能,相对于应用系统而言,Docker屏蔽了与平台相关的具体细节.Docker像一个集装箱,把应用系统及其依赖组件包装起来.在迁移系统时,只要把这个"集装箱"搬过去便可,而没必要处理"集装箱"里面的具体细节.
Docker这个功能特性的实现,在于开发人员为不一样平台提供了相对应的镜像文件,镜像文件中包含了容器的内容,即应用系统以及依赖组件.既然是文件,必然也存在着版本的问题,Docker一样提供了基于Git的版本控制机制.
Docker是一个典型的C/S架构.
经过Docker客户端能够与Docker服务器进行交互,而Docker服务器则负责构建,运行和分发Docker镜像.
镜像:
镜像Image是Docker中很是重要的一个概念.简单地讲,镜像就是容器的模板.对于普通用户来讲,镜像文件一般都是只读的.镜像至关于构建和打包阶段
容器:
容器是独立运行的一个或者一组应用,是从镜像建立的运行实例.容器是可读可写的.容器至关于启动和执行阶段.
能够把容器看做是一个简易版的Linux环境,包括root用户权限,进程空间,用户空间和网络空间等以及运行在其中的应用程序.
仓库:
仓库是集中存放镜像文件的地方.仓库分为公有仓库和私有仓库两种形式,如Docker Hub是最大的公有仓库.
有时候会把仓库和仓库注册服务器混为一谈,并不严格区分.实际上,仓库注册服务器上每每存放着多个仓库,每一个仓库中又包含了多个镜像,每一个镜像都有不一样的标签.
Docker的迅速发展,与云计算技术是密不可分的.
Docker用于提供轻量级的虚拟化服务.它的应用场景很是普遍,主要有如下几种:
简化部署过程.
节省开支.云计算时代的到来,使开发者没必要为了追求性能而配置高额的硬件,Docker改变了高性能必然高价格的思惟定势.Docker与云计算的结合,不只解决了硬件管理的问题,也改变了虚拟化的方式.
Docker的普遍应用极大的下降了IT设施的运维成本.主要有: