Docker虚拟化概念
1、虚拟化技术的概念
- 虚拟化技术主要是将物理资源转变为逻辑上可以管理的资源;
- 用以打破物理资源结构之间的壁垒;
- 让计算的原件运行在虚拟的基础之上;而不是直接运行在硬件设备资源上;
说白了就是硬件资源转变成虚拟资源;
虚拟化技术的底层是要进行虚拟的硬件设备物理机,通过虚拟化技术可以将物理机虚拟生成N台虚拟机、应用程序、软件服务是运行在虚拟机上的,而不是直接运行在物理设备机上
应用程序:
- Nginx、MySQL、Redis 、MQ、ZK、Kafka;
当下主流技术:
- 虚拟化、:
- -虚拟化技术允许一个平台同时运行多个操作系统,
- 并且应用程序都可以在相互独立的空间内运行而互不影响,
- 从而显著提高计算机的工作效率,是一个为了简化管理,优化资源的解决方案。
- 云计算:
- 大数据
2、虚拟化技术的意义
虚拟化技术主要是为了最大化利用高配硬件设备的资源,提供机器资源利用率;
- 如果物理资源已经全部用完了,其他的程序就无法使用
可以对软件服务、进程资源进行隔离、限制;
- 限制内存分配、硬盘、CPU的分配
可以淘汰老、旧服务器资源,对老、旧、服务器资源进行重组、重用、加快企业自动化运维&DevOps脚步进程
- 硬件整合,
3、虚拟化技术的种类
- VMware ESXI
- VMware workstations:
- vmware公司的产品
- XEN
- KVM:
- 最终的产物就是虚拟环境、虚拟机
- 用于业务,
- 虚拟机也可以理解为云主机
- Open-vz
- Hyper-V:
- 微软的虚拟化软件
- Podman:
- 比较火?就是docker 的命令?
- 很相似–>掌握思想,学习思路
- podman pull nginx
- docker pull nginx
- Docker:
- Docker被淘汰了?
- K8S不用docker用于底层管理;
- 运维都很焦虑?
4、Docker简介
- Docker 是众多虚拟化技术中的一种,是目前企业中使用最多的虚拟化技术软件;
- Docker是一款轻量级、高性能的虚拟化技术,是目前互联网使用最多的虚拟化技术
- Docker虚拟化 是一个开源的应用容器引擎,
- Docker容器是完全使用沙箱机制,相互之间不会有任何接口,几乎没有性能开销,可以很容易地在机器和数据中心中运行
- Docker的基础是 Linux 容器(LXC)等技术。
5、Docker虚拟化技术特点:
- 轻量级、高性能、安全、稳定、管理方便;
- Docker虚拟化技术的产物就是Docker容器;
- 那么Docker容器与KVM的虚拟机有什么不同?
- Docker容器也被称为轻量级的虚拟机,
- 比传统的KVM虚拟机更加轻巧
- 容器共享宿主机的资源、内核
- 不管是什么的虚拟化技术都会共享宿主机的资源;
6、Docker架构:
- Server(硬件资源)–>Host OS(宿主机操作系统)–>VMware(虚拟软件)–>APP(应用服务)
- 效率高,启动快
- 轻量级虚拟化:
- 开源免费
- Docker虚拟化技术是在硬件的基础上,基于现有的操作系统层面上实现虚拟化,直接复用本地主机的操作系统,直接虚拟生成Docker容器,
- Docker容器上部署相关的APP应用(Apache、MYSQL、PHP、JAVA)。
- Docker虚拟化的优点:
- 操作启动快
- 轻量级虚拟化
- 开源免费
- 前景好,云支持多
- Docker虚拟化的缺点
- 难度高、技术资料不多;
- Go语言还没有完全成熟;
传统虚拟化架构:
- Server(硬件资源)–>Host OS(宿主机操作系统)–>VMware(虚拟软件)–>Guest OS(虚拟机系统)–>APP(应用服务)
- 完全虚拟化技术
- 半虚拟化技术
- KVM、XEN、ESXI传统虚拟化(完全、半虚拟化)是在硬件的基础上,
- 基于现有的操作系统层面上实现虚拟化,但是不能复用本地主机的操作系统
- 而是必须虚拟出自己的Guest OS系统,
- 然后在Guest OS系统上部署相关的APP应用(Apache、MYSQL、PHP、JAVA)。
什么是LXC技术?
- LXC(Linux Container)linux容器概念
- LXC是基于是内核级的虚拟化技术
7、Docker 虚拟化技术结构:
- LXC(Linux Container)+AUFS(Another Union File System)结构组合
- Docker虚拟化技术是在LXC技术上进一步的封装提供了一系列完整的功能
- LXC主要负责资源管理
- AUFS主要负责镜像管理
- LXC包括Cgroup、NameSpace、Chroot等组件,并通过Cgroup进行资源管理。
- Docker、LXC、Cgroup三者的关系
- Cgroup在最底层落实资源管理,
- Cgroups又名Control groups,是Linux内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(CPU、 Memory、IO、NET)的机制。
- LXC在cgroup上封装了一层,
- Linux Container容器技术可以提供轻量级的虚拟化,以便隔离进程和资源
- LXC是建立在CGroup基础上,可以理解为:LXC = Cgroup+ namespace + Chroot + veth +用户态控制脚本
- Docker又在LXC封装了一层
- Docker容器的文件系统最早是建立在Aufs基础上的
- Cgroup在最底层落实资源管理,
Aufs文件系统
- Aufs将挂载到同一虚拟文件系统下的多个目录分别设置成read-only,read-write以及whiteout-able权限
- read-only:只读权限
- read-write以:写操作
- whiteout-able:
Device Mapper文件系统
- Device Mapper 是 Linux2.6 内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
- 内核架构:
- Device Mapper 进一步体现了在 Linux 内核设计中策略和机制分离的原则,
- 将所有与策略相关的工作放到用户空间完成,
- 内核中主要提供完成这些策略所需要的机制。
- Device mapper 用户空间相关部分主要负责配置具体的策略和控制逻辑,
- 整个Device Mapper机制由两部分组成-内核空间的Device mapper 驱动、用户空间的Device mapper 库以及它提供的Dmsetup工具。
OverlayFS文件系统
- OverlayFS是目前使用比较广泛的层次文件系统,是一种类似Aufs的一种堆叠文件系统
- Docker虚拟化Overlay存储驱动利用了很多OverlayFS特性来构建和管理镜像与容器的磁盘结构
- 在真实使用中,OverlayFS代表整个文件系统,而Overlay/Overlay2表示Docker的存储驱动
Docker引擎架构
- docker引擎是一个C/S结构的应用;
- Docker使用C/S架构,Client 通过接口与Server进程通信实现容器的构建,运行和发布
8、Docker的三大概念:
- Docker镜像、
- Docker虚拟化最基础的组件为镜像
- Docker镜像是静止的、只读的,不能对镜像进行写操作。
- Docker容器、
- Docker容器是Docker虚拟化的产物
- 基于镜像运行,并且在镜像最上层添加一层容器层之后的实体,容器层是可读、可写的
- Docker仓库
- Docker仓库是用于存放Docker镜像的地方,
- Docker仓库分为两类:
- 公共仓库(Public)
- 私有仓库(Private)
Docker镜像原理:
- Docker镜像是分层的;有多个层级组成;每个层级实现某个功能;
- Docker镜像是分层的,由多个层级组成
- 编写Dockerfile和基于容器Commit实现镜像制作
- Docker引擎默认通过镜像ID来识别镜像;
- 每个镜像层都是只读,即使启动成容器
- Docker容器是一个或者是多个运行的进程,
- 消耗CPU、内存的资源
- json文件可以反映运行的进程;
Docker组件说明
- Docker Server是一个常驻进程
- REST API 实现了client和server间的交互协议
- Docker CLI 实现容器和镜像的管理,为用户提供统一的操作界面;
- Images为容器提供了统一的软件、文件底层存储;
- Container是Docker虚拟化的产物,直接作为生产使用;
- Network为Docker容器提供完整网络通信;
- Volume为Docker容器提供额外磁盘、文件存储对象。