基本概念
什么是应用?
提供数据传输,计算,存储服务的程序。
如何提供一个应用?
资源(运算单元,内存,网络,存储)
操作系统(Linux,Unix,Windows...)
运行时环境(应用中间件, 数据库,Nosql, 消息中间件...)
应用程序(基于指定语言开发的业务应用程序)
什么是容器?
描象概念:容器用来包装或装载物品的贮存器。
信息化技术领域概念:用来运行应用的资源环境,为应用提供运行所需要的网络,运算,存储资源)
容器的特点:
隔离性
在没有授权的情况下容器外的介质无法获取容器内的介质信息。
专用性
分配给容器使用的资源,其它容器不可使用。
原理
什么是应用容器?
为数据传输,计算,存储服务的应用程序分配运行资源的技术。
如何提供一个应用容器?
1.直接使用硬件设备,为应用提供运行所需资源。(如:PC,服务器)
2.通过操作系统之上安装的虚拟软件,为应用提供运行所需资源。(如:Hyper-V,VMware)
3.通过操作系统的虚拟技术,为应用提供运行所需资源。(如:LXC)
区别:
硬件设备专用->硬件级共享->系统级共享
应用
Docker是什么?
Docker是基于LXC,Namespace,Cgroup,UnionFS等技术,实现轻量级虚拟技术应用的解决方案。
LXC(Linux containers)
是一种基于操作系统层级的虚拟化技术。LXC可以在操作系统层次上为进程提供的虚拟的执行环境,一个虚拟的执行环境就是一个容器。可以为容器绑定特定的cpu和memory节点,分配特定比例的cpu时间、IO时间,限制可以使用的内存大小(包括内存和是swap空间),提供device访问控制,提供独立的namespace(网络、pid、ipc、mnt、uts)。
namespace(命名空间)
是 Linux 内核一个强大的特性。每个容器都有自己单独的命名空间,运行在其中的应用都像是在独立的操作系统中运行一样。命名空间保证了容器之间彼此互不影响。
cgroup(控制组)
linux内核的一个特性,主要用来对共享资源进行隔离,限制,审计等.只有能控制分配到容器的资源,才能避免当多个容器同时运行时对系统资源的竞争
UnionFs(联合文件系统)
是一种分层、轻量级并且高性能的文件系统,它支持对 文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。
Docker技术方案特点
Docker技术方案的特点主要体现在其三大核心概念上:仓库,镜像,容器
镜像(image)
是创建docker容器的基础,docker镜像类似于虚拟机镜像,可以将它理解为一个面向docker引擎的只读模块,包含文件系统。
容器(container)
Docker容器类似一个轻量级的沙箱,Docker利用容器来运行和隔离应用,运行应用时为其分配相关的资源。
仓库(Repository)
仓库是存放docker镜像集合的地方,提供第三方应用的官方镜像,如:Mysql,Redis,ActiveMQ等。
也可以将自定义镜像上传到仓库中,供其它Docker宿主机下载运行。
三大核心之间的联系
Docker技术方案的特点
能解决哪些问题
一句话概括就是解决复杂的环境问题。
Docker官方使用场景