1、Docker概述
是一个基于 Linux container Go 语言开发遵循 apache2.0 协议的管理引擎
官网:www.docker.com
1.1、Docker 的来源
由于开发的软件包在自己的开发环境中可以正常运行而在运维环境中有bug的事情屡见不鲜,致使开发和运维产生矛盾,逐渐将容器技术推上舞台,直接将软件包和其运行环境打包到一起。
集群环境部署费时费力,Docker可以达到秒级部署。
隔离:Docker的核心思想;每一个集装箱是相互隔离的,互不影响的,同时可以将每个"集装箱"压缩到极致,即极大的提高服务器的利用率。
1.2、Docker的发展历史
2010年 dotcloud 公司开发以一款产品为 dotcloud ;主要基于 PaaS(Platfrom as a Service)平台为开发者服务;
2013年 公司改名为 Docker 并将 Docker 开源;
2014年 Docker 1.0 发布;
1.2.0、云计算分类
单词解释:
vendor:/'vendəz/ n. 供应商,销售商
IaaS:基础设施即服务(阿里云、百度云等公有云服务)操作系统。云盘服务超额出售。提高了某个集体的能效比,更大程度上的实现资源的合理利用。
PaaS:平台即服务(Docker、Kubernetes)共享目录,小企业。
SaaS:软件即服务,直接在云端提供软件,office365
1.2.1、Docker 简介
①、Linux Container 是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源。
②、Docker 是 PAAS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于 go 语言并遵从 Apache2.0 协议开源。
Docker引擎的类型:
C/S结构:docker daemon 和 docker client,采用套接字访问,
套接字访问:
特点:①、面向无连接的,②、访问更快,③、只能在本机进行访问
所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议根进行交互的接口。
套接字格式:(IP地址:端口)
TCP访问:三次握手,四次挥手。网络层协议。
高级:越远离底层,越靠近用户,
go语言:高级语言,有更加轻量级的线程(协程)
愿景:成为21世纪的 C 语言(没有垃圾回收);
清流云:国内 go 语言的先驱,其代码均是由 go 语言重构的。
Docker 的分类:
Docker CE(community edition):社区版本(开源)
Docker EE(enterprise edition):企业版本(不开源)美国制裁。
③、Docker 设想是交付运行环境如同海运,OS 如同一个货轮,每一个在 OS 基础上的软件都如同一个集装箱,用户可以通过标准化手段自由组装运行环境,同时集装箱的内容可以由用户自定义,也可以由专业人员制造。
集装箱之间不仅能够隔离,而且还可以叠加使用,标准化封装
1.3、Docker与传统虚拟化的对比
跟传统虚拟化相比较Docker更轻量化,同样的硬件环境,可以运行更多的应用程序,
缺点:安全性相比较传承虚拟化较低,需要引导镜像
优点:更轻量化,共享硬件环境、共用 lib 库,共享内核
Docker的启动时间等同于进程的启动时间,
Docker 制定了容器的运行标准,即镜像的封装方法。
1.4、Docker组件的构成----三要素
1.4.1、容器
类似于虚拟机
1.4.2、镜像
类似于虚拟机的 ISO 镜像
1.4.3、仓库
类似于存储 ISO 镜像的仓库,存储大量的不同的 ISO 镜像
1.5、Docker组件的构建方式
1.6、Docker应用的存在方式
1.6.1、空白层
空白层可以定义该容器自己的软件类型,即在调用原有镜像的基础上修改镜像内容
例如:镜像的数据库为MySQL,应用 B 需要使用 mariadb 数据库,可以直接在引用应用 A 的镜像的基础上,在自己的容器上安装 mariadb 数据库即可,加少了再次搭建其他公用软件镜像的空间。
1.6.2、软件的分层
软件的镜像在打包时时分层打包的,相互隔离开的,便于不同应用的调用。