• 3.1虚拟化和安装Docker


    虚拟化和Docker优化

    引言

    以linux而言,linux操作系统会有一个主进程pid=1派生出其他进程来控制不同服务,多个服务可能会相互影响。

    虚拟化

    cpu的时间分片(cpu虚拟化),cpu虚拟化性性能瓶颈。

    虚拟化工作原理

    image-20220109115326552

    两大核心组件:QEMU、KVM

    • QEMU

      ①可以理解为队列,核心目的是调用资源内核中的资源,需要把KVM逻辑分割出来的资源运输给QEMU,再给虚拟机。

      ②QEMU它并不是直接调用,而是用I/O方式调用,QEMU把资源调用来的过程借用ioctl,QEMU借助libvirt这个工具调用ioctl,再通过接口,给虚拟机应用程序。

    • KVM:

      ①用来逻辑分割物理资源,抽象化为虚拟化资源,根据VMM里的配置,会逻辑分割出多少G,给应用程序,去进行虚拟化。

      ②只接受来自QEMU的请求指令。对于应用程序直接过来的敏感指令会拦截,然后通过接口发给QEMU,让QEMU判断是否需要执行,可以的话,再下来,不可以的话,打回去,不执行该敏感指令。

    image-20220903110336937

    虚拟化类型

    1. 全虚拟化:将物理硬件资源全部通过软件的方式抽象化,最后进行调用
    2. 半虚拟化:需要修改操作系统
    3. 直通:直接使用物理硬件资源(需要支持,还不完善)

    全虚拟化:KVM——》产品vmware—ce

    半虚拟化:EXSI——》(workststion)vsphere

    对于workstation而言——硬件辅助虚拟化,表现形式在处理器里面有一个虚拟化引擎,可以勾取硬件辅助虚拟化,看到虚拟接口/dev/kvm,可以加强辅助调用,在应用程序需要频繁调用的时候,需要开启。比如openstack。

    image-20220903110353381

    容器概述

    Docker是什么

    • 是一种轻量级的“虚拟机”,Docker是一个用于开发,交付和运行应用程序的开放平台。
    • 在Linux容器里运行应用的开源工具——容器引擎,让开发者可以打包大门的应用及依赖包到一个可移植的镜像中,然后发布到任何流行的linux或者window机器中。
    • Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱。鲸鱼可看作为宿主机,集装箱可理解为相互隔离的容器,每个集装箱中都包含自己的应用程序。
    • Docker的设计宗旨:Build,Ship and Run Any App, Anywhere
      即通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。

    Docker的使用场景

    • 打包应用程序部署简单

    • 可脱离底层硬件任意迁移(实现了应用的隔离,将应用拆分并进行解耦)例如:需要把服务器从腾讯云迁移到阿里云,如果采用的是 Docker 容器技术,整个迁移的过程只需要在新的服务器上启动我们需要的容器就可以了。

    • 适合做微服务的部署

    • 适合持续集成和持续交付(CI/CD):开发到测试发布

    image-20220109153957551

    Docker 三要素(核心组件)

    • 镜像(Docker images):统一的封装方式,一个面向Docker容器引擎的只读模板
    • 容器(Docker container):统一的运行时环境,基于镜像,运行状态/运行时状态
    • 镜像仓库(Docker registry):放置镜像的仓库,存放镜像模板

    CentOS安装Docker的两种方式
    ●使用CURL获得Docker的安装脚本进行安装
    ●使用YUM仓库来安装Docker

    • Docker的镜像、容器、日志等内容全部都默认存储在/var/lib/docker

      存储镜像的地方,默认在公共的 Docker Hub上查找,可以搞个人仓库。

      仓库大类:①公共仓库—》docker hub ②私有仓库registry harbor

    image-20220109160214727

    容器特性——性能损耗10-20%

    • 灵活:即使是最复杂的应用也可以集装箱化。
    • 轻量级:容器利用并共享主机内核。
    • 可互换:可以即时部署更新和升级。
    • 便携式:可以在本地构建,部署到云,并在任何地方运行。
    • 可扩展:可以增加并自动分发容器副本。
    • 可堆叠:可以垂直和即时堆叠服务。

    六大名称空间

    namespace资源隔离——用容器技术封装

    image-20220109122533046

    mount文件系统,挂载点——>一个文件系统内,不能重复挂载一个指定目录
    user操作进程的用户和用户组
    pid进程编号
    uts主机名和主机域 (同一个环境里不能又叫node1又叫node2)
    ipc信号量、消息队列、共享内存(不同的应用调用内存资源的时候应该使用不同的内存空间)
    net(网络资源)网络设备、网络协议栈(在同一个网络名称空间中的网络规则)、端口等

    小结:

    IAAS(基出设施)SAAS(软件服务)PAAS(平台服务)DAAS(数据服务)
    openstack / KVM linux环境下
    ESXI ESXI企业
    xen
    docker
    VMware workstation个人

    容器:提供在多台主机上运行应用程序相同的运行环境
    docker是开源的容器引擎,go语言开发的,是容器里运行应用的工具,是一个径量级的虚拟机可以利用locker在多台主机上轻松的创建并运行容器。

    docker容器可以被看做运行在宿主机上一个进程,容器共享宿主机的内核,容器间是通过namespace(命名空间、名称空间)隔离资源,通过cgroups(资源配额)去限制资源。

    镜像
    运行容器的基础,包含运行的应用程序所需的所有内容。
    容器
    是从镜像创建的运行实例。
    仓库
    集中保存镜像的地方(公有仓库dolker hub,私有仓库harhor)。

    安装docker

    目前 Docker 只能支持 64 位系统。
    systemctl stop firewalld.service
    setenforce 0
    #安装依赖包
    yum install -y yum-utils device-mapper-persistent-data lvm2 
    ---------------------------------------------------
    yum-utils:提供了 yum-config-manager 工具。
    device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
    device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
    ---------------------------------------------------
    #设置阿里云镜像源
    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
    #安装 Docker-CE并设置为开机自动启动
    yum install -y docker-ce docker-ce-cli
    systemctl start docker.service
    systemctl enable docker.service 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    安装好的Docker系统有两个程序,Docker服务端和Docker客户端。其中Docker服务端是一个服务进程,负责管理所有容器。
    Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上。

    #查看 docker 版本信息
    docker version
    #查看docker信息
    docker info
    
    • 1
    • 2
    • 3
    • 4

    设置镜像加速

    1.申请加速器地址
    使用阿里云的镜像,加速镜像下载速度
    登录阿里云账号

    2.搜索容器镜像服务点击进入找到镜像工具——镜像加速器,找到自己需要的版本,将命令复制到系统里面。

    image-20220905140217471

    image-20220905140718112

    网络优化

    vim /etc/sysctl.conf
    net.ipv4.ip_forward=1  #开启路由转发
    sysctl -p
    systemctl restart network
    systemctl restart docker
    
    • 1
    • 2
    • 3
    • 4
    • 5

    片转存中…(img-V6bLQN1J-1663301244921)]

    网络优化

    vim /etc/sysctl.conf
    net.ipv4.ip_forward=1  #开启路由转发
    sysctl -p
    systemctl restart network
    systemctl restart docker
    
    • 1
    • 2
    • 3
    • 4
    • 5

    开启路由转发是让docker0能根据虚拟机ip为自己所有的docker容器分配虚拟ip

  • 相关阅读:
    2022杭电多校第七场题解
    机器学习——支持向量机原理
    03 野火imxull开发板添加 正点原子lcd 支持
    Linux进程概念(二)--进程状态&进程优先级
    MIT6.5830 Lab1-GoDB实验记录(一)
    ARM32开发——第一盏灯
    ABAP 屏幕开发-仿采购订单
    【运维笔记】Docker 部署Kibana-7.4.0(在线Docker版)
    ARouter原理解析之自定义路由框架DXRouter
    设计模式:策略模式、工厂模式、模板模式混合使用
  • 原文地址:https://blog.csdn.net/qq_49124206/article/details/126888054