【百度云原生导读】Kubernetes 简称 K8S,是一个开源的用于管理云平台中多个主机上的容器化的应用,让部署容器化的应用简单并且高效,Kubernetes 提供了一种应用部署、规划、更新、维护的机制。
本文是基于『云原生基础知识概述及实践』系列视频课程——『Kubernetes 入门—深入浅出讲 Docker』进行的文字梳理,视频课程:
https://www.bilibili.com/video/BV19f4y1z7LR
本节课作为 K8S 入门基础课第一期,将介绍一种虚拟环境容器:Docker。
主要包括以下三大部分:
第一:容器化的简介和发展历程——主要介绍虚拟化、容器化的概念和发展历程,让同学们对 Docker 有一个宏观的认识
第二:Docker 容器的基本使用和镜像制作——了解 Docker 容器的基本使用后,还会通过实践学习到:如何启动一个 Docker 镜像,如何构建自己的 Docker 镜像,如何对镜像进行 Debug。
第三:Docker 底层核心技术——加深对 Docker 的理解。
1. 容器化的简介和发展历程
1.1 虚拟化技术介绍
简单来说,Docker 是一种虚拟化技术,虚拟化技术可以分至少3种。
第一种:硬件虚拟化,这是底层的技术实现。
第二种:软件虚拟化,比如常见的虚拟机。
第三种:就是我们今天所介绍的,容器虚拟化技术。
通俗地讲,虚拟化技术就是多个人,通过一种技术协作使用一台电脑来工作,使得每个人都觉得如同在自己的电脑上工作一样互不干扰。
为了更好的了解这三种虚拟化技术的运行机制,我们对比一下物理机、虚拟机、Docker 系统运行栈。
可以看到,无论是哪一种虚拟化技术,都是多层的。其中,蓝色部分是底层实现,黄色的部分是操作系统及以上的软件层面上的实现。层数越多,运行的开销就会更大。
物理机的系统运行栈分析:
第一层 Infrastructure:基础架构层
第二层 Host OS:操作系统层
第三层:二进制/依赖库
第四层:应用程序
虚拟机的系统运行栈分析:
底层实现上,虚拟机比物理机多了一层 Hypervisor。这是一个常用的硬件虚拟化软件,可以把底层的操作系统抽象出多个底层的硬件接口。
而在操作系统及以上的软件层面实现上,被分成了3个并行执行的虚拟机,而每一个并行运行的虚拟机和物理机相比,又多了一层 Guest OS,也就是每个虚拟机还要运行自己的操作系统,这是和物理机的一个比较大的区别。
Docker 的系统运行栈分析:
和虚拟机的结构相似,Docker 也被分为了若干个“容器”。但是和虚拟机相比,少了一层。可以直观的感受到,Docker 的运行效率要比虚拟机要高。
互联网常面临一个场景:爆发式的流量增长。在这种情况下,效率一定是第一位的。
针对以上三种虚拟化技术,从他们的部署、运行时间上,也可以对他们的运行效率简单对比:
物理机的部署,时间周期大概是以月为计算。包括建设机房,建设机架,部署机器,部署网络,部署机器的操作系统等&