1、 Docker简介
Docker是一种运行在Windows和Linux的程序软件,用于创建,管理和编排容器。Dcoker是在github上开发的Moby开源项目的一部分。 Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口 -来自百度百科
2、 Dcoker安装
参照我之前的笔记可完美安装
3 Dcoker存储驱动
每一个docker容器都有一个本地存储空间,用于保存层叠的镜像层(image Layer)以及挂载的容器文件系统,默认情况下,容器的所有读写操作都发生在起镜像层或挂载的文件系统中,所以存储是每个容器的性能和稳定性不可或缺的一个环节
- Linux环境:docker可选择的存储驱动包括AUFS(最原始也是最老的)、Overlay2(目前默认也是未来最佳选择)Device Mapper、Btrfs和ZFS。
- Windows环境:只支持一种驱动即Windows Filter 。
存储驱动是节点级别的,这意味着每个docker主机只能选择一种驱动,而不能为每个容器选择不同的驱动。
4 纵观Docker架构
一个完整的Docker有以下几个部分组成
1、 DockerClient客户端
2、 Docker Daemon守护进程
3、 Docker Image镜像
4、 DockerContainer容器
4.1 docker 引擎
docker引擎是用来运行和管理容器的的核心软件,一般人会简单的将它认为是docker或者docker平台
以下是架构简图,参考《深入浅出docker》书籍
4.2 镜像
可以将镜像理解为包含os文件系统和应用的对象,也可理解为虚拟机的模板,包含了你运行所需的基础配置,如果你是一名开发者,你可以理解为一个类(class)
4.3 容器
对于我们开发者而言,可以理解为一个应用程序,即容器及应用,里面包含了运行程序所必备的基础环境
5 docker容器与虚拟机有什么区别
容器和虚拟机都依赖于宿主机才能运行。宿主机可以是笔记本,是数据中心的物理服务器,也可以是公有云的某个实例。在下面的示例中,假设宿主机是一台需要运行4个业务应用的物理服务器。
- 虚拟机模型:在虚拟机模型中,首先要开启物理机并启动Hypervisor引导程序(本书跳过了BIOS和Bootloader代码等)。一旦Hypervisor启动,就会占有机器的全部物理资源,如CPU、RAM、存储和NIC。Hypervisor接下来就会将这些物理资源划分为虚拟资源,并且看起来与真实物理资源完全一致。然后Hypervisor会将这些资源打包进一个叫虚拟机(VM)的软件结构中。这样用户就可以使用这些虚拟机,并且在其中可以安装操作系统和应用。 如图所示:
- 容器模型:和虚拟机模型有所不同,物理主机启动之后,容器也会跟随启动,os系统也占用了全部的硬件资源,在os层之上需要安装容器引擎,容器引擎可以获取系统资源,比如进程树,文件系统以及网络栈,接着将资源分割为安全的互相隔离的资源结构,称之为容器。每个容器看起来就像一个真实的操作系统,在其内部可以运行安装应用。 如图所示,我们做个简单的示意图:
从更高层面来讲,Hypervisor是硬件虚拟化(Hardware Virtualization) -—Hypervisor将物理资源划分为虚拟资源,另外,容器是操作系统虚拟化(OS Virtualization)-- 容器将系统资源划分为虚拟资源
此外,还要说的是,启动速度,因为容器不是完整的操作系统,所以启动要远比虚拟机快。切记,在容器内部不需要内核,也没有定位,解压以及初始化的过程,所以最终的结果就是,容器可以在1秒内启动。唯一对容器启动时间有影响的就是容器内部应用启动所花费的时间。
这就是容器模型要比虚拟机模型简洁并且高效的原因
6 总结
本次只是对初学者对docker有个大体认识以及为什么容器技术在近些年开源之后热火并博客文章体系快速成长起来,一线大厂对容器的重视程度如此之高与他的整体架构有密切的联系,毫不过分的说容器技术使得世界走上了容器应用化的道路,颠覆了之前传统的硬件架构。