[由零开始] 容器虚拟化技术和自动化部署-Docker

伴随着信息技术的飞速发展,虚拟化技术早已经广泛应用到各种关键场景中。
部署、交付、运行
传统来看,虚拟化(vm)既可以通过硬件模拟来实现,也可以通过操作系统软件来实现。而容器技术则
更为优雅,它充分利用了操作系统本身已有的机制和特性,可以实现远超传统虚拟机的轻量级虚拟化。
因此,有 人甚至把它称为“新一代的虚拟化”技术,并将基于容器打造的云平台亲切地称为“容器云”。CI
CD

容器化和虚拟化

虚拟化

在最早的时候,我们想要在线上部署一个应用。我们需要先购买服务器,然后安装操作系统及各种依赖
环境,最后进行应用的部署。
问题:

  1. 部署应用上线应用过程时间非常长

  2. 购买服务器的花费不菲

  3. 物理服务器的资源容易浪费

  4. 迁移和扩展比较困难
    因为有上面的问题,后来出现的虚拟化技术。 虚拟化技术就是在操作系统上多加了一个虚拟化层
    (Hypervisor),可以将物理机的CPU、内存、硬盘、网络等资源进行虚拟化,再通过虚拟化出来的空
    间上安装操作系统,构建虚拟的应用程序执行环境。这就是我们通常说的虚拟机。
    比如:VMware 、VirtualBox、KVM等。

虚拟化技术的优点:
提升IT效率
降低运维成本
更快地部署工作负责
提高应用性能
提高服务器可用性
消除服务器梳理剧增情况和复杂性
虚拟机的缺点:
占用资源较多
性能较差
扩展能力较差
环境迁移能力较差
于是容器化技术诞生了。

容器化

容器化起源集装箱。集装箱 ——全球物流系统中一个非常重要的发明。在运输之前一次性将货物封装好
到集装箱里面,之后的集装箱直接放到卡车、火车、货轮上,而且集装箱是统一标准的,自然容易机械
化,因此集装箱的革命,节省了大量的资源、物流成本大大降低。

在这里插入图片描述

借鉴了集装箱的解决方案,提出了类似集装箱的方式封装应用以及它的运行环境,将应用和环境打包成
一个轻量化、可移植、自包含的容器。
容器是轻量级的,因为它们不需要虚拟机管理程序的额外负载,而是直接在主机的内核中运行。
这意味着与使用虚拟机相比,可以在给定的硬件组合上运行更多的容器。
甚至可以在实际上是虚拟机的主机中运行Docker容器

在这里插入图片描述

容器有四个特点:

  • 容器共享宿主机内核
  • 容器使用内核的功能对进程进行分组和资源限制
  • 容器通过命名空间保证隔离
  • 容器像是轻量级的VM(占用空间更少,速度更快),但不是虚拟机

在这里插入图片描述

Docker概述

什么是Docker

  • Docker开源项目背景
    Docker是基于Go语言实现的开源容器项目,诞生于2013年年初,最 初发起者是dotCloud公司
    (Docker Inc)
    Docker项目已加入了Linux基金会,并遵循Apache2.0协议,全部开源代码均在https://github.co
    m/docker/docker上进行维护。
    Docker的构想是要实现“Build,Ship and Run Any App, Anywhere”,即通过对应用的封装
    (Packaging)、分发 (Distribution)、部署(Deployment)、运行(Runtime)生命周期进
    行管理,达到应用组件“一次封装,到处运行”的目的。这里的应用组 件,既可以是一个Web应用、
    一个编译环境,也可以是一套数据库平台服务,甚至是一个操作系统或集群。
    Docker首次为应用的开发、运行和部署提供了“一站式”的实用解决方案。
  • Linux容器技术(LXC)
    早期的Docker是基于Linux容器技术(Linux Containers,LXC)的。
    最早的容器技术可以追溯到1982 年Unix系列操作系统上的chroot工具(直到今天,主流的Unix、
    Linux操 作系统仍然支持和带有该工具)。早期的容器实现技术包括Sun Solaris 操作系统上的
    Solaris Containers(2004年发布),FreeBSD操作系统上的 FreeBSD jail(2000年左右出现),
    以及GNU/Linux上的Linux-VServer和 OpenVZ。
  • 从Linux容器到Docker
    在LXC的基础上,Docker进一步优化了容器的使用体验
    Docker提供了各种容器管理工具(如分发、版本、移植等)让用户无需关注底层的操作,可以更简
    单明了地管理和使用容器
    Docker通过引入分层文件系统构建(aufs)和高效的镜像机制,降低了迁移难度,极大地提升了用
    户体验。
    自0.9版本开始,Docker 开发了libcontainer项目,作为更广泛的容器驱动实现,从而替换掉了
    LXC的实现。

Docker的应用场景

快速,一致地交付应用程序、镜像打包环境,避免了环境不一致的问题
Docker可以为开发人员提供标准化的本地工作环境给应用程序和服务,从而简化了开发生命周期。容器
非常适合持续集成和持续交付(CI / CD)工作流程
如果有以下场景可以使用Docker交付:

  • 开发人员在本地编写代码,并使用Docker容器与其他同事共享劳动成果。
  • 使用Docker将应用程序推送到测试环境中,并执行自动和手动测试。
  • 当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中以
    进行测试和验证。
  • 测试完成后,将修补程序推送给生产环境就像将更新的镜像推送到生产环境一样简单。

响应式部署和扩展

Docker是基于容器的平台允许高度可移植的工作负载。Docker容器可以在开发人员的本地笔记本电脑
上,数据中心中的物理或虚拟机上,云提供商上或混合环境中运行。
Docker的可移植性和轻量级的特性还使可以轻松地动态管理工作负载,并根据业务需求指示实时扩展或
拆除应用程序和服务。

在同一个硬件上运行更多工作负载

Docker轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行,经济高效的替代方案,因此我们可以
利用更多的计算能力来实现业务目标。Docker非常适合于高密度环境以及中小型部署,而需要用更少的
资源做更多的事情。

为什么要使用Docker

Docker容器虚拟化的好处
Docker提供了一种更为聪明的方式,通过容器来打包应用,解耦
应用和运行平台。意味着迁移的时候,只需要在新的服务器上启动需要
的容器就可以了,无论新旧服务器是否是同一类型的平台。
Docker在开发和运维中的优势
更快速的交付和部署
更高效的资源利用
更轻松的迁移和扩展
更简单的更新管理
提供完整的软件生态系统: 镜像管理、资源隔离、文件系统、网络隔离、流程管理及服务发现

Docker与虚拟机比较

Docker是一种轻量级的虚拟化方式。与传统虚拟机技术的特性比较如下表:

特 性容 器虚 拟 机
启动速度秒级分钟级
性能接近原生较弱
内存代价很小较多
硬盘使用一般为MB一般为GB
运行密度单机支持上千个容器一般几十个
隔离性安全隔离完全隔离
迁移性优秀一般

传统的虚拟机方式提供的是相对封闭的隔离。Docker利用Linux系统上的多种防护技术实现了严格的隔
离可靠性,并且可以整合众多安全工具。从 1.3.0版本开始,Docker重点改善了容器的安全控制和镜像
的安全机制, 极大提高了使用Docker的安全性。

Docker核心组件

在这里插入图片描述

Docker引擎

Docker使用客户端-服务器架构
Docker客户端是用户与Docker交互的主要方式,与Docker守护进程(Docker引擎)进行通信
该守护进程完成了构建,运行和分发Docker容器的繁重工作
Docker客户端和守护程序可以在同一系统上运行,也可以将Docker客户端连接到远程Docker守护程
序。
Docker客户端和守护程序在UNIX套接字或网络接口上使用REST API进行通信。
Docker守护进程侦听Docker API请求并管理Docker对象,例如镜像,容器,网络和卷等。
守护程序还可以与其他守护程序通信以管理Docker服务

Docker镜像

Docker镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。
镜像是基于联合(Union)文件 系统的一种层式的结构,由一系列指令一步一步构建出来。
比如:
添加一个文件;
执行一个命令;
打开一个端口。
镜像是创建Docker容器的基础。通过版本管理和增量的文件系统, Docker提供了一套十分简单的机制
来创建和更新现有的镜像,用户可以从网上下载一个已经做好的应用镜像,并直接使用
我们可以利用Dockerfile构建自己的镜像。

Docker容器

Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。
容器是镜像的一个运行实例。
可以将其启动、开始、停止、删除,而这些容器都是彼此相互隔离的、互不可见的。
可以把容器看做是一个简易版的Linux系统环境(包括root用户权限、进程空间、用户空间和网络空间
等)以及运行在其中的应用程序打包而成的盒子。
容器是基于镜像启动起来的,容 器中可以运行一个或多个进程。
镜像是Docker生命周期 中的构建或打包阶段,而容器则是启动或执行阶段。
镜像自身是只读的。容器从镜像启动的时候,会在镜像的最上层创建一个可写层。

Docker仓库

Docker仓库类似于代码仓库,它是Docker集中存放镜像文件的场所。
仓库注册服务器(Registry)是存放仓库的地方,其上往往存放着多个仓库
每个仓库集中存放某一类镜像,往往包 括多个镜像文件,通过不同的标签(tag)来进行区分
在这里插入图片描述

根据所存储的镜像公开分享与否,Docker仓库可以分为公开仓库 (Public)和私有仓库(Private)两种
形式。
目前,最大的公开仓库是 官方提供的Docker Hub,其中存放了数量庞大的镜像供用户下载。
国内不少云服务提供商(如时速云、阿里云等)也提供了仓库的本地源,可以提供稳定的国内访问。
Docker也支持用户在本地网络内创建一个只能自己访问的私有仓库。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值