- CKA/CKAD应试教程:从Docker到Kubernetes完全攻略
- 段超飞编著
- 1160字
- 2025-03-17 18:51:23
1.1 容器介绍及环境准备
【必知必会】什么是容器?
初学者不太容易理解什么是容器,这里举个例子。想象一下,我们把系统安装在一个U盘里,此系统里安装好了MySQL。然后把这个U盘插入一台正在运行的物理机上,这个物理机上并没有安装MySQL,如图1-1所示。

图1-1 了解容器和镜像(1)
然后把U盘里的mysqld进程“拽”到物理机上运行。但是,这个mysqld进程只能适应U盘里的系统,不一定能适应物理机的系统。所以,找一个类似气球的东西把mysqld进程在物理机里包裹保护起来,这个mysqld进程依然享受U盘里的生态环境(系统),却可以从物理机上吸收CPU和内存作为维持mysqld进程运行的“养分”。
那么,这个类似气球的东西就是容器,U盘就是镜像。
在Linux环境下安装软件包时经常会遇到各种包依赖,或者有人不会在Linux系统(比如Ubuntu、CentOS)里安装软件包。这样以后就不需要安装和配置MySQL了,直接把这个“U盘”插到计算机上,然后生成一个容器出来,这样就有MySQL这个服务了,是不是很方便?
所谓镜像,就是安装了系统的硬盘文件,这个系统里安装了想要运行的程序,比如MySQL、Nginx,并规定好使用这个镜像所生成的容器里面运行什么进程。这里假设有一个安装了MySQL的镜像,如图1-2所示。
在服务器上有一个MySQL的镜像(已经安装好了MySQL),然后使用这个镜像生成一个容器。这个容器里只运行一个mysqld进程。容器里的mysqld进程直接从物理机上吸收CPU和内存以维持它的正常运行。
以后需要什么应用就直接拉取什么镜像下来,然后使用这个镜像生成容器。比如需要对外提供MySQL服务,那么就拉取一个MySQL镜像,然后生成一个MySQL容器。如果需要对外提供Web服务,那么就拉取一个Nginx镜像,然后生成一个Nginx容器。
一个镜像是可以生成很多个容器的,如图1-3所示。

图1-2 了解容器和镜像(2)

图1-3 了解容器和镜像(3)
如同我们聊天要安装QQ或微信一样,要管理镜像和容器,需要先安装runtime,翻译成中文叫作运行时。运行时又分为低级别运行时和高级别运行时。
低级别运行时包括runc、gVisor、kata等,只能单一地管理容器,比如创建、删除、关闭容器等,对用户而言操作起来不是很方便。
高级别运行时包括Docker、Containerd、Podman等,不仅可以管理容器,也可以管理镜像。高级别运行时管理容器时要调用低级别运行时,高级别运行时默认调用的是runc这个低级别运行时。它们的关系如图1-4所示。
所有的运行时都遵照OCI(Open Container Initiative)标准,如同所有的USB设备都遵照USB标准一样,所以Docker里的镜像在其他运行时里也可以正常使用。虽然从Kubernetes v1.24开始,默认不再使用Docker作为runtime了,但是Docker依然是功能很强大的工具,包括构建镜像、搭建私有仓库(后面章节会讲)等,本章将会讲解Docker和Containerd两种runtime。
本书的整个容器部分共需要2台机器,配置如图1-5所示。

图1-4 高级别runtime

图1-5 拓扑图
所需机器的配置如表1-1所示。
表1-1 所需机器的配置

其中,vms102.rhce.cc用作搭建Harbor,在第2章中使用。
注意
所需要的虚拟机可以在http://www.rhce.cc/2748.html里下载,所有的机器需要关闭SELinux。

然后重启系统。
通过firewall-cmd --set-default-zone=trusted命令把firewalld默认的zone设置为trusted。