**二、**Docker介绍
2.1 什么是虚拟化
在计算机中,虚拟化是一种资源管理技术,是将计算机的各种实体资源,如:服务器、网络、内存、存储等等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原来的组态更好的方式来应用这些资源,这些资源的核心虚拟部分是不受现有资源的架设方式,低于或者物理组态所限制,一般所指的虚拟化资源包括计算能力和资料存储。
在实际的生产过程中,虚拟化技术主要是用来解决高性能的物理硬件产能过剩和老的硬件产能过低的重用重组,透明化底层物理硬件,从而最大化的利用物理硬件,对资源充分利用。
虚拟化技术种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化(vip),桌面虚拟化、服务虚拟化、虚拟机等等。
虚拟化简单讲,就是把一台物理计算机虚拟成多台逻辑计算机,每个逻辑计算机里面可以运行不同的操作系统,相互不受影响,这样就可以充分利用硬件资源。
2.2 认识Docker
- Docker是一个开源的应用容器引擎
- 诞生于2013年初,基于Go语言实现,dotCloud公司出品(后改名为Docker Inc)Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植的容器中,然后发布到任何流行的linux服务器上
- 容器是完全使用沙箱机制,相互隔离
- 容器性能开销极低
- Docker从17.3版本之后分为CE(Community Edition社区版)和EE(Enterprise Edition企业版)
小结:Docker是一种容器技术,解决软件跨环境迁移的问题
2.3 容器与虚拟机比较
2.3.1 什么是虚拟机
虚拟机是一个计算机系统的仿真,简单来说,虚拟机可以实现在一台物理计算机上模拟多台计算机运行任务。
-
操作系统和应用共享一台或多台主机(集群)的硬件资源,每台VM有自己的OS,硬件资源是虚拟化的。
-
管理程序(hypervisor)负责创建和运行VM,它连接了硬件资源和虚拟机,完成server的虚拟化。
由于虚拟化技术和云服务的出现,IT部门通过部署VM可以可减少cost提高效率
VMs也消耗大量系统资源,每个VM不仅运行一个OS的完整copy并且需要所有硬件的虚拟化copy,这消耗大量RAM和CPU。
相比单独计算机,VM是比较经济的,但对于一些应用VM是过度浪费的,需要容器。
2.3.2 什么是容器
- 容器是将操作系统虚拟化,这与VM虚拟化一个完整的计算机有所不同。
- 容器是在操作系统之上,每个容器共享OS内核,执行文件和库等。共享的组件是只读的,通过共享OS资源能够减少复现OS的代码,意味着一台server仅安装一个OS可以运行多个任务。
- 容器是非常轻量的,仅仅MB水平并且几秒即可启动。相比容器,VM需要几分钟启动,并且大小也大很多。
2.4、 Docker与虚拟机形象比喻
2.4.1 什么是物理机
2.4.2 什么是虚拟机
2.4.3 什么是docker
三、Docker 组件
3.1 Docker 服务端和客户端
Docker是一个客户端-服务端(C/S)架构程序 ,Docker客户端只需要向Docker服务端或者守护进程发出请求,服务端或者守护进程完成所有工作返回结果。
Docker提供了一个命令行工具Docker以及一整套的Restful API,可以在同一台宿主机器上运行Docker守护进程或者客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。
docker引擎是一个c/s结构的应用,主要组件见下图:
- Server是一个常驻进程
- REST API 实现了client和server间的交互协议
- CLI 实现容器和镜像的管理,为用户提供统一的操作界面
3.2 Docker 构架
Docker使用C/S架构, Client 通过接口与Server进程通信实现容器的构建,运行和发布 .client和server可以运行在同一台集群,也可以通过跨主机实现远程通信。
3.2.1 Docker 镜像
Docker 镜像(Image)就是一个只读的模板。例如:一个镜像可以包含一个完整的操作系统
环境,里面仅安装了 Apache 或用户需要的其它应用程序
- 镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。
- 镜像(Image)就是一堆只读层(read-only layer)的统一视角,也许这个定义有些难以理解。
看看下面这张图:
右边可以看到多个只读层,它们重叠在一起,除了最下面一层,其它层都会有一个指针指向下一层。这些层是Docker内部的实现细节,并且能够在docker宿主机的文件系统上访问到。
统一文件系统(Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。
3.2.2 Docker 容器
Docker 利用容器(Container)来运行应用。容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
-
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网 络空间等)和运行在其中的应用程序。
-
创建Container首先要有Image,也就是说Container是通过image创建的。
-
Container是在原先的Image之上新加的一层,称作Container layer,这一层是可读可写的(Image是只读的)。
在面向对象的编程语言中,有类跟对象的概念。类是抽象的,对象是类的具体实现。Image跟
Container可以类比面向对象中的类跟对象,Image就相当于抽象的类,Container就相当于具体实例化的对象。
Image跟Container的职责区别:Image负责APP的存储和分发,Container负责运行APP
3.2.3 Registy(注册中心)
仓库(Repository)是集中存放镜像文件的场所。 有时候会把仓库和仓库注册服务(Registry)混为一谈,并不严格区分。
实际上,仓库注册服务器上往往存放多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
- 最大的公开仓库是Docker Hub,存放了数量庞大的镜像供用户下载。
- 国内的公开仓库包括时速云 、网易云等,可以提供大陆用户更稳定快速的访问。
- 当然,用户也可以在本地网络内创建一个私有仓库,当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。
Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务。
**
-
服务器
+关注
关注
12文章
8912浏览量
85016 -
Docker
+关注
关注
0文章
449浏览量
11784
发布评论请先 登录
相关推荐
评论