官术网_书友最值得收藏!

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。

主站蜘蛛池模板: 内黄县| 汉寿县| 清新县| 怀安县| 紫云| 沅江市| 鄂尔多斯市| 井冈山市| 舒兰市| 本溪| 陆河县| 台北县| 滨州市| 信丰县| 菏泽市| 清丰县| 澄迈县| 望谟县| 拜泉县| 阳信县| 马尔康县| 望都县| 巩留县| 康保县| 渭源县| 台北县| 久治县| 青铜峡市| 深州市| 准格尔旗| 招远市| 健康| 皋兰县| 深圳市| 淮安市| 灌云县| 林周县| 南安市| 集安市| 喜德县| 阳江市|