容器

容器其实是一种沙盒技术。顾名思义,沙盒就是能够像一个集装箱一样,把你的应用"装"起来的技术。这样,应用与应用之间,就因为有了边界而不至于相互干扰;而被装进集装箱的应用,也可以被方便地搬来搬去,这其实是 PaaS 最理想的状态。


问题:容器的本质到底是什么?

容器的本质是进程。容器就是未来云计算系统中的进程;容器镜像就是这个系统里的".exe"安装包。Kubernetes 就是操作系统!

Docker介绍:

官网:

    docker.io

    docker.com

公司名称:原名dotCloud  14年改名为docker

容器产品:docker 16年已经被更名为Moby


容器

web容器 web中间件

        html (nginx apache )

php (php模块  php-fpm)

java(tomcat weblogic Resin JBoss  WebSphere )

            python (uwsgi)  web server gateway interface


nginx+tomcat+jdk weblogic

nginx+(nginx+php-fpm)

nginx+uwsgi+django

mycat  mysql-proxy数据库中间件           

devops(运维开发,早些年指的运维和开发精通的。)

rd

1.部署开发环境  单机环境

2.软件开发

3.测试

4.打包


op           

1.测试环境   

2.线上环境(上线工具 u盘 ftp scp rsync svn git github gitlab ci/cd+容器平台:git+jenkins+jdk+maven+tomcat+容器镜像库服务器+k8s集群 )

运维

1.rd开发产品(需要配置开发环境)lamp

2.测试(需要配置测试环境)

3.op上线(需要线上环境)

开发测试运维开战


1.  rd开发产品(需要在docker容器里配置开发环境)      

2.把容器打包成镜像交给运维,运维上线       


Docker跟原有的工具区别:

传统的部署模式是:    安装(包管理工具或者源码包编译)->配置->运行;

Docker的部署模式是:复制->运行。


容器和VM的主要区别:

1. 容器提供了基于进程的隔离,而虚拟机提供了资源的完全隔离。

2. 虚拟机可能需要一分钟来启动,而容器只需要一秒钟或更短。

3. 容器使用宿主操作系统的内核,而虚拟机使用独立的内核

4.容器只是一个进程,而虚拟机不是


Docker对服务器端开发/部署带来的变化:

实现更轻量级的虚拟化,方便快速部署

对于部署来说可以极大的减少部署的时间成本和人力成本

Docker支持将应用打包进一个可以移植的容器中,重新定义了应用开发,测试,部署上线的过程,核心理念就

是Build once, Run anywhere

1)标准化应用发布,docker容器包含了运行环境和可执行程序,可以跨平台和主机使用;

2)节约时间,快速部署和启动,VM启动一般是分钟级,docker容器启动是秒级;

3)方便构建基于SOA架构或微服务架构的系统,通过服务编排,更好的松耦合;

4)节约成本,以前一个虚拟机至少需要几个G的磁盘空间,docker容器可以减少到MB级;

5)方便持续集成,通过与代码进行关联使持续集成非常方便;

6)可以作为集群系统的轻量主机或节点,在IaaS平台上,已经出现了CaaS,通过容器替代原来的主机。

iaas     infrastructure as a service

paas    platform as a service

saas    software as a service

dsaas   data storage as a service

caas    container as a service


Docker优势:

1、交付物标准化

Docker是软件工程领域的"标准化"交付组件,最恰到好处的类比是"集装箱"。

集装箱将零散、不易搬运的大量物品封装成一个整体,集装箱更重要的意义在于它提供了一种通用的封装货物的

标准,卡车、火车、货轮、桥吊等运输或搬运工具采用此标准,隧道、桥梁等也采用此标准。以集装箱为中心的

标准化设计大大提高了物流体系的运行效率。

传统的软件交付物包括:应用程序、依赖软件安装包、配置说明文档、安装文档、上线文档等非标准化组件。

Docker的标准化交付物称为"镜像",它包含了应用程序及其所依赖的运行环境,大大简化了应用交付的模式。


2、一次构建,多次交付

类似于集装箱的"一次装箱,多次运输",Docker镜像可以做到"一次构建,多次交付"。当涉及到应用程序多副本

部署或者应用程序迁移时,更能体现Docker的价值。


3、应用隔离

集装箱可以有效做到货物之间的隔离,使化学物品和食品可以堆砌在一起运输。Docker可以隔离不同应用程序之间的相互影响,但是比虚拟机开销更小。

总之,容器技术部署速度快,开发、测试更敏捷;提高系统利用率,降低资源成本。

Docker的度量:

Docker是利用容器来实现的一种轻量级的虚拟技术,从而在保证隔离性的同时达到节省资源的目的。Docker的

可移植性可以让它一次建立,到处运行。Docker的度量可以从以下四个方面进行:

1)隔离性

Docker采用libcontainer作为默认容器,代替了以前的LXC。libcontainer的隔离性主要是通过内核的命名空

间来实现的,有pid、net、ipc、mnt、uts命令空间,将容器的进程、网络、消息、文件系统和主机名进行隔

离。

2)可度量性

Docker主要通过cgroups控制组来控制资源的度量和分配。

3)移植性

Docker利用AUFS来实现对容器的快速更新。

AUFS是一种支持将不同目录挂载到同一个虚拟文件系统下的文件系统,支持对每个目录的读写权限管理。AUFS具有层

的概念,每一次修改都是在已有的只写层进行增量修改,修改的内容将形成新的文件层,不影响原有的层。

4)安全性

安全性可以分为容器内部之间的安全性;容器与托管主机之间的安全性。

容器内部之间的安全性主要是通过命名空间和cgroups来保证的。

容器与托管主机之间的安全性主要是通过内核能力机制的控制,可以防止Docker非法入侵托管主机。


Docker容器使用AUFS作为文件系统,有如下优势:

1)节省存储空间

多个容器可以共享同一个基础镜像存储。

2)快速部署

如果部署多个来自同一个基础镜像的容器时,可以避免多次复制操作。

3)升级方便

升级一个基础镜像即可影响到所有基于它的容器。

4)增量修改

可以在不改变基础镜像的同时修改其目录的文件,所有的更高都发生在最上层的写操作层,增加了基础镜像的可共享内容。

你可能感兴趣的:(容器)