1 docker基本概念和框架

版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/kan2016 https://blog.csdn.net/kan2016/article/details/84776081

1.什么是容器?

(1)一种虚拟化的方案

(2)操作系统级别的虚拟化

(3)只能运行相同或相似内核的操作系统

(4)依赖于Linux内核特性:Namespace和Cgroups(Control Group)

2.Linux容器技术vs虚拟机

虚拟机运行应用app,不仅需要包含的库,还需要包含完整的操作系统,而容器运行只需要应用app和依赖的库。运用容器技术不仅可以减少资源的占用,还会降低对cpu和内存的损耗,可以提高更多的服务能力。

3.什么是docker?

(1)将应用程序自动部署到容器

(2)Go语言开源引擎

(3)基于Apache2.0开源授权协议发行

4.docker特点

(1)提供简单轻量的建模方式,启动快速,容易上手,可以充分利用系统资源

(2)职责的逻辑分离,开发人员只需关注容器中运行的应用程序,运维人员只需关注如何管理容器

(3)快速高效的开发生命周期,缩短代码从开发、测试到部署上线运行的周期,让应用程序具备可移植性,在容器中开发,以容器的形式交互和分发,这样开发、测试、生产都使用相同的测试环境,避免了额外的调试和部署的开销,有效缩短产品的上线周期

(4)鼓励使用面向服务的架构,docker推荐单个容器运行一个应用程序或进程,形成一个分布式的应用程序模型,在这种模型下,应用程序和服务都可以表示为一系列内部互联的容器,从而使分布式应用程序扩展或调试应用程序变得非常简单,即开发中常用的思想“高内聚,低耦合,单一任务”,可以避免在同一服务器部署不同服务时,可能带来服务之间的影响,运行过程中出现问题也比较容易定位问题的所在。

5.docker使用场景

(1)使用docker容器开发、测试、部署服务。

(2)创建隔离的运行环境

(3)搭建测试环境

(4)构建多用户的平台即服务(PaaS)基础设施

(5)提供软件即服务(SaaS)

(6)高性能、超大规模的宿主机部署

6.docker基本组成

(1)Docker Client 客户端

(2)Docker Daemon守护进程

Docker是C/S架构的程序,Docker的客户端向服务器端(也就是守护进程)发出请求,守护进程处理完所有的工作并返回结果,Docker客户端对服务器端的访问既可以在本地,也可以在通过远程来访问。

(3)Docker Image镜像

镜像是docker容器的基石,容器基于镜像启动和运行,镜像保存了用于启动容器的各种条件。docker的镜像是一个层叠的只读文件系统,最低端是一个引导文件系统(即bootfs),第二层是root文件系统(即rootfs),它位于bootfs之上,可以是一种或多种操作系统,比如ubuntu或者centos。在docker中,root文件系统永远只能是只读状态,并且docker运用联合加载技术又会在root文件系统之上加载更多的只读文件系统,联合加载指的是一次加载多个文件系统,但是在外面看起来只能看到一个文件系统,联合加载会将各层文件系统叠加到一起,这样最终的文件系统会包含所有的底层文件和目录,docker将这样的文件系统称为镜像。

(4)Docker Container容器

容器通过镜像来启动,docker中的容器是docker的执行来源,容器中可以运行客户的一个或多个进程,如果说镜像是docker生命周期中的构建和打包阶段,那么容器则是启动和执行阶段。

容器是怎样通过镜像来启动的呢?

当一个容器启动时,docker会在该镜像的最顶层加载一个读写文件系统,也就是一个可写的文件层,我们在docker运行的程序,就是在这个层中进行执行的,当docker第一次启动一个容器时,初始的读写层是空的,当文件系统发生变化时,这些变化都会应用到这一层上,比如像修改一个文件,该文件首先会从读写层下面的只读层复制到该读写层,该文件的只读版本依然存在,但是已经被读写层中的该文件副本所隐藏,这就是docker的一个重要技术:写时复制(copy on write)。每个只读镜像层都是只读的,永远不会变化,当创建一个新容器时,dicker会构建出一个镜像栈,如下图所示:

(5)Docker Registry 仓库 

docker用仓库来保存用户构建的镜像,仓库分为公有和私有两种,Docker公司提供了一个公有的仓库Docker Hub。

7.Docker依赖的Linux内核特性:

(1)Namespaces 命令空间

在操作系统层面提供了系统资源的隔离(进程、网络、文件系统等等)

PID (Process ID) 进程隔离;

NET (Network)     管理网络接口;

IPC (InterProcess Communication)  管理跨进程通信的访问;

MNT (Mount)  管理挂载点;

UTS (Unix Timesharing System) 隔离内核和版本标识;

(2)Control groups(cgroups)控制组

是linux内核提供的一种可以限制、记录、隔离进程组所使用的物理资源的机制。

cgroups提供的功能:

资源限制;

优先级设定;

资源计量;

资源控制;

8.Docker容器的能力

(1)文件系统隔离:每个容器都有自己的root文件系统

(2)进程隔离:每个容器都运行在自己的进程环境中

(3)网络隔离:容器间的虚拟网络接口和IP地址都是分开的

(4)资源隔离和分组:使用cgroups将CPU和内存之类的资源独立分配给每个Docker容器

猜你喜欢

转载自blog.csdn.net/kan2016/article/details/84776081