【Docker】一篇入门基础与镜像原理

第一章 Docker介绍

1.1 背景介绍

Docker是一个开源的应用容器引擎,基于LXC(Linux Container)内核虚拟化技术实现,提供一系列更强的功能,比如镜像、Dockerfile等。Docker理念是将应用及依赖包打包到一个可移植的容器,可发布到任意Linux发行版Docker引擎上。使用沙箱机制(对内容进行了独立包装)运行程序,程序之间互相隔离;Docker使用Go语言开发。

​ Docker采用C/S架构,Docker daemon作为服务端接受来自客户端请求,并处理这些请求,比如创建、运行容器等。客户端为用户提供了一系列的指令。

vmware虚拟机 + centos(ISO镜像) = 得到一个可以使用的Linux系统

传统的纯物理部署的缺点:

screen-capture

虚拟化技术:

screen-capture

虚拟化也有局限性,每一个虚拟机都是一个完整的操作系统,要分配系统资源,虚拟机多道一定程度时,操作系统本身资源也就消耗殆尽,或者说必须扩容。

虚拟化:云服务器,其实就是使用网上的虚拟机。

虚拟机工具巨头:

  • vmware workstation (属于个人学习使用),主要是用于windows平台。创建虚拟机(安装系统)
  • linux下的虚拟工具,kvm工具。(创建虚拟机+安装各种系统)
  • 企业版虚拟化 vmware esxi虚拟化工具,高性能服务器结合。进行平台资源虚拟化。

云计算:将计算工作,放在云上去执行。例如:去阿里云购买RDS数据库服务,不需要自己搭建数据库,做数据库高可用等等。

screen-capture

1.2 虚拟化背景:

​ 虚拟化(技术)是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象、转换后呈现出来并可供分割、组合为一个或多个电脑配置环境。

​ 全虚拟化:VMware提出一种二进制翻译技术。VMware在虚拟机操作系统和宿主计算机(物理计算机+windows/mac操作系统)之间扮演一个桥梁的角色,将虚拟机中的要执行的指令“翻译”成恰当的指令在宿主物理计算机上执行,以此来模拟执行虚拟机中的程序。

​ 半虚拟化(Xen内核定制修改),与全虚拟化相比避免了敏感指令(删除之类的)对本体系统的修改,降低操作风险。这项技术的代表是Xen,它最大的问题是需要修改操作系统源码,Linux开源倒是可以,windows是闭源的。

​ 硬件辅助虚拟化(VT/AMD -v),CPU辅助虚拟化。

​ KVM-QEMU,KVM全称for Kernel -based Virtual Machine,意为基于内核的虚拟机。KVM作为一项虚拟化技术已经集成到Linux内核之中。也会安装出一个完整的操作系统,与VMware在这方面相同。

容器技术-LXC&Docker,前面的技术其虚拟化的目标都是一台完整的计算机,拥有底层的物理硬件、操作系统和应用程序执行的完整环境。为了让虚拟机中的程序实现像在真实物理机器上运行“近似”的效果,背后的HyperVisor做出了大量的工作(相当于装东西的盒子太过豪华,对于要装的内容来说其实没必要)。而docker 其实就满足了程序运行的环境需要(大小与外观适合的盒子,说装袜子就装袜子,想装衣服就重拿个盒子)。

screen-capture

1.3 容器技术

​ Docker 最初是DotCloud公司在法国期间发起的一个公司内部项目,后来以Apache2.0授权协议开源,其是由go语言开发的,基于Linux内核的Cgroups、NameSpace,以及Union FS(联合唯一文件系统)等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。

​ 由于隔离的进程独立宿主机和其他隔离的进程(在本体主机上,运行两个端口相同的软件也不会冲突),也被称之为容器。

​ Docker被定义为开源的容器引擎,可以方便的对容器进行管理。如对镜像打包封装、引入Docker Registry对镜像统一管理。利用Docker可以实现开发、测试、生产环境的部署一致性,极大的减少运维成本。

screen-capture

screen-capture

1.4 容器和虚拟机的差异

1.4.1 传统虚拟机技术

​ 虚拟机是虚拟出一套硬件,在其上运行一个完整的操作系统,例如我们使用KVM,指定系统镜像,然后装系统,最终可以使用,在该系统上再运行所需的应用程序

​ KVM创建虚拟机时,指定较少的CPU, 内存,硬盘等资源,虚拟机性能较低。

screen-capture

1.4.2 容器技术

​ 容器内的应用程序直接运行在宿主机的内核上,容器内没有自己的内核,也没有对硬件进行虚拟,因此容器比起虚拟机更为轻便。(容器内的程序,就好比直接运行在宿主机上,能够使用宿主机最大的硬件资源,但程序之间又是隔离的。)

1.4.3 容器对比KVM的好处

  • 容器能够提供宿主机原生的性能,而KVM虚拟机是分配宿主机硬件资源,性能较弱。
  • 同样配置的宿主机,最多可以启动10个虚拟机的话,可以启动100+的容器数量。
  • 启动一个KVM虚拟机,得有一个完整的开机流程,花费时间较长,或许得20s,而启动一个容器只需要1s.
  • KVM需要硬件CPU的虚拟化支持,而容器不需要。
  • docker提供了除内核以外完整的运行时环境,确保了应用环境的一致性。

第二章 Docker 基础组件

运行镜像生成容器。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值