- CKA/CKAD應試教程:從Docker到Kubernetes完全攻略
- 段超飛編著
- 1160字
- 2025-03-17 18:51:22
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。
- ThinkPHP 5實戰
- Oracle 11g從入門到精通(第2版) (軟件開發視頻大講堂)
- Angular UI Development with PrimeNG
- Selenium Design Patterns and Best Practices
- Hands-On Swift 5 Microservices Development
- Spring Boot Cookbook
- 劍指Java:核心原理與應用實踐
- 用戶體驗可視化指南
- SSM開發實戰教程(Spring+Spring MVC+MyBatis)
- Citrix XenServer企業運維實戰
- Orchestrating Docker
- 深度探索Go語言:對象模型與runtime的原理特性及應用
- Java Web開發實例大全(基礎卷) (軟件工程師開發大系)
- Python數據預處理技術與實踐
- Flutter從0基礎到App上線