云计算-Docker

来自:https://blog.csdn.net/xiaowang627/article/details/70164225

开发语言:Golang

一 概述

个人主机时代——CPU主频的高低和内存的大小;云计算时代——虚拟化技术。

虚拟化既可以通过硬件模拟来实现,也可以通过操作系统来实现。

容器虚拟化方案,充分利用了操作系统本身已有的机制和特性,可以实现轻量级的虚拟化,Docker是其中佼佼者。

二 什么是Docker

2.1 Docker开源项目

Docker是基于Go语言实现的云开源项目,全部开源代码均在https://github.com/docker/docker上进行维护,Docker是仅次与OpenStack的最受欢迎的云计算开源项目。

Docker的主要目标:Build, Ship and Run Any App, Anywhere

2.2 Linux容器技术

容器有效的将由单个操作系统管理的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求,与虚拟化相比,这样既不需要指令集模拟,也不需要及时编译。容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制,此外也避免了准虚拟化和系统调用替换中的复杂性。

Linux容器技术(LXC)借鉴了前人成熟的容器设计理念,基于一系列新的内核特性实现了更具扩展性的虚拟化容器方案,并被集成到了主流Linux内核中,成为了Linux系统轻量级容器技术的事实标准。Docker引擎的基础是Linux容器技术

2.3 从Linux容器到Docker

Docker在LXC基础之上进一步优化了容器的使用体验,提供各种容器管理工具(如分发,版本,移植等),让用户无需关注底层的操作。

可将Docker容器理解为一种沙盒:每个容器内运行一个应用,不同的容器相互隔离,容器之间也可以建立通信机制,容器的创建和停止都十分快速,容器自身对资源需求十分有限,远远低于虚拟机,有时甚至把容器直接当成应用本身。

三 为什么要用Docker

3.1 Docker容器虚拟化的好处

高效构建应用。通过容器打包应用,若需要迁移应用,只需要在新的服务器上启动需要的容器即可。

3.2 Docker在开发和运维中的优势

一次性的创建或配置,任意环境,任意时间运行。具体优势:

(1)更快速的交付和部署:可使用镜像来快速构建一套标准的开发环境,测试和运维人员可以直接使用相同的环境来部署代码。Docker可以快速创建和删除容器,实现快速迭代。

(2)更高效的资源利用:它是内核级虚拟化,可以实现更高的性能 ,同时对资源的额外需求很低。

(3)更轻松的迁移和扩展:Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑和服务器等。

(4)更简单的更新管理:Dockerfile只需要小小的配置修改,就可以替代以往大量的更新工作。

3.3 Docker与虚拟机比较

(1)Docker容器很快。

(2)Docker容器对系统资源需求很少。

(3)学习成本较低。

(4)工作效率高。

四 虚拟化与Docker

虚拟化核心:对资源进行抽象。

虚拟化目标:在同一个主机上运行多个系统或应用——》提高资源利用率,降低成本,方便管理,容错容灾。

虚拟化分类:基于硬件的虚拟化(比较少见)和基于软件的虚拟化(应用虚拟化(如wine)和平台虚拟化)。

平台虚拟化:

完全虚拟化:模拟完整的底层硬件环境和特权指令的执行过程,如VMware workstation和VirtualBox等。

硬件辅助虚拟化:如Xen。

部分虚拟化:针对部分硬件资源虚拟化。

超虚拟化:如早起的Xen。

操作系统级虚拟化:内核通过创建多个虚拟的操作系统实例(内核和库)来隔离不同的进程,容器相关技术即在这个范畴,Docker也属于该范畴。

Docker和常见的虚拟机方式的不同之处如下所示:

可见Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,因此更加轻量级。

openstack基于KVM ,docker基于LXC。

docker是通过内核虚拟化技术((namespaces及cgroups等),KVM呢是通过硬件虚拟化技术,CPU支持的。)来提供容器的资源隔离与 安全保障等。

  在非linux平台是没法使用docker的,因为他是基于内核技术来实现资源隔离和安全保障的。

  由于dockers通过操作系统层的虚拟化实现隔离,所以docker容器在运行的时候,不需要类似虚拟机(VM)额外的操作系统开销,提高了资源的利用率。

猜你喜欢

转载自blog.csdn.net/lyq_csdn/article/details/81081228