虚拟化解决方案:docker

目录

        一、什么是虚拟化

        1.1 虚拟化的概述

        1.2 虚拟化发展史

        1.2.1 虚拟化类型

        二、docker概述

        2.1 概述

         2.1.1 docker的意义

        2.2 docker组件

        2.2.1 虚拟化和容器的区别

        2.3 docker 引擎

         2.4 名称空间

         2.5 控制组

        三、部署docker

        3.1 部署步骤

         3.2 配置镜像加速

         3.3 网络加速


        一、什么是虚拟化

        1.1 虚拟化的概述

        虚拟化以软件形式实现物理设备的功能(二层交换机、路由器、三层交换机等)

        1.2 虚拟化发展史

雏形:

        1961年,IBM709机器实现了分时系统,将cPU占用切分为多个极短的时间片(1/100sec)每一个时间片执行不同的工作,通过对这些时间片进迸行轮询从而将一个CPU伪装成多个CPU

        1972年,IBM正式将system370机的分时系统命名为虚拟机

        1990年,IBM推出的system390机支持逻辑分区(将一个CPU分为多份,相互独立,也就是逻辑分割)

        Xen 2003年问世,是一个外部的hypervisor/VWMM程序(虚拟机管理程序),能够控制宿主机和给多个客户机分配资源KVM:2007年问世,现己内置在kernel内核中的

        xen 支持的虚拟化技术:全虚拟化,半虚拟化

        KVM:支持的虚拟化技术:全虚拟化

        1.2.1 虚拟化类型

        全虚拟化:将物理硬件资源全部通过软件的方式抽象化,最后进行调用

        半虚拟化:需要修改操作系统

        直通:直接使用物理硬件资源

        优势:集中化管理(远程管理、维护)

        提高硬件利用率(物理资源利用率低-例如峰值,虚拟化解决了"空闲"容量)

        动态调整机器/资源配置(虚拟化把系统的应用程序和服务硬件分离、提高了灵活性)

        高可靠(可部署额外的功能和方案,可提高透明负载均衡、迁移、恢复复制等应用环境)

        劣势:

        前期高额费用(初期的硬件支持) 降低硬件利用率(特定场景-例如极度吃资源的应用不一定适合虚拟化) 更大的错误影响面(本地物理机down机会导致虚拟机均不可用,同时可能虚拟机中文件全部损坏)

        实施配置复杂、管理复杂(管理人员运维、排障困难) 一定的限制性(虚拟化技术涉及各种限制,必须与支持/兼容虚拟化的服务器、应用程序及供应商结合使用)

        安全性(虚拟化技术自身的安全隐患)

        二、docker概述

        2.1 概述

        docker是一个用于开发,交付和运行应用程序开放的平台是一个开源的应用容器引擎,让开发者可以打包其应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或者Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

        沙箱:在计算机安全领域,沙箱是一种程序的隔离运行机制。 

         2.1.1 docker的意义

        docker引擎统一了基础设施环境-docker容器环境(引擎)

        docker引擎统一了程序打包(装箱)方式-docker镜像(封装的某一个时刻的服务/应用状态 )

        docker引擎统一了程序部署(运行)方式-docker容器(应用跑起来的状态 )

        2.2 docker组件

        Docker守护程序( dockerd)侦听 Docker API请求并管理Docker对象,例如图像,容器,网络和卷。守护程序还可以与其他守护程序通信以管理Docker服务。

        Docker images:镜像

        Docker container:容器

        Docker registry:镜像仓库

        Docker harbor:本地镜像

        Docker hub:公共仓库

        存储镜像的地方,默认在公共的docker hub上查找,由于docker仓库延迟的原因可以创建个人仓库方便使用。

         镜像获取流程:客户机发送命令请求镜像,daemon查看本地是否存在客户机所请求的镜像,如果有返回,没有则向registry镜像仓库请求镜像将镜像放入至容器。

      

        2.2.1 虚拟化和容器的区别

不同点containerVM
启动速度秒级分钟级
运行性能接近原生50%左右
磁盘占用MBGB
数量成百上千十几台左右
隔离性进程级别系统级别
操作系统主要支持Linux几乎所有
封装程度只打包项目代码和依赖关系,共享宿主机的内核完整的操作系统,与宿主机隔离

        2.3 docker 引擎

        Docker Engine是具有以下主要组件的客户端-服务器应用程序(C/S端): 服务器是一种长期运行的程序,称为守护程序进程( dockerd命令)。 REST API,它指定程序可以用来与守护程序进行通信并指示其操作的 接口。

        流程:客户端使用命令传入方式和restAPL进行交互,命令通过restAPI,进入内核中的docker-server端,由server端进行处理,返回通过rest API 返回给docker-client端进行展示。

         2.4 名称空间

        Docker使用一种称为namespaces提供容器的隔离工作区的技术。运 行容器时,Docker会为该容器创建一组名称空间。 这些名称空间提供了一层隔离。容器的每个方面都在单独的名称空间中运行,并且其访问仅限于该名称空间。

        docker中的6个名称空间:

mount文件系统,挂载点
user操作进程的用户和用户组
pid进程编号
uts主机名和主机域
ipc信号量、消息队列,共享内存
net网络设备、网络协议栈、端口等

         2.5 控制组

        Linux上的 Docker引擎还依赖于另一种称为控制组( cgroups)的技术。cgroup_将应用程序限制为一组特定的资源。控制组允许DockerEngine 将可用的硬件资源共享给容器,并有选择地实施限制和约束。例如,您可以限制特定容器可用的内存。

        三、部署docker

        3.1 部署步骤

##安装依赖包
[root@docker ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
##设置阿里云镜像源
[root@docker ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
##安装 Docker-CE 社区版并设开机自动启动
[root@docker ~]# yum install -y docker-ce
[root@docker ~]# systemctl start docker.service
[root@docker ~]# systemctl enable docker.service

         当安装失败的话请关注错误信息查看内核版本是否支持

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

 

         3.2 配置镜像加速

 ##再次重启服务

[root@docker docker]# sudo systemctl daemon-reload
[root@docker docker]# sudo systemctl restart docker

         3.3 网络加速

##开启路由转发
[root@docker docker]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

##刷新配置文件
[root@docker docker]# sysctl -p
##重启服务
[root@docker docker]# systemctl restart docker
[root@docker docker]# systemctl restart network

         开启路由网关原因:docker拥有独立的网段172.17.0网段,宿主机需要跨网段访问出去,要开启路由转发,进行高效的网络转发

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值