1)關于Containerd的基礎知識
從 Docker 1.11 版本開始,Docker 容器運行就不是簡單通過 Docker Daemon 來啟動了,而是通過集成containerd、runc等多個組件來完成的。 雖然Docker Daemon守護進程模塊在不停地重構,但是基本功能和定位沒有太大的變化,一直都是CS架構,守護進程負責和Docker Client端交互,并管理Docker鏡像和容器。 現在的架構中組件containerd就會負責集群節點上容器的生命周期管理,并向上為Docker Daemon提供gRPC接口。
Containerd-shim是Containerd的一個插件,它用來扮演進程管理器的角色,接收來自containerd的命令,并在容器內部創建和管理進程。它可以與Runc協同工作,使得容器的創建、啟動、停止、暫停和恢復等操作都能夠得到有效的處理。一句話,創建容器這件事是由Containerd-shim來完成的。
我們都知道,創建容器是需要做一些namespaces和cgroups的配置,以及掛載root文件系統的操作。這些操作其實已經有了標準的規范,那就是OCI(開放容器標準)。
OCI本質上就是一個規范文檔,主要規定了容器鏡像的結構標準以及容器接收操作指令的標準,比如create、start、stop、delete 等這些命令。而Runc其實就是按照這個OCI的各種規范來實現管理容器的。
所以真正啟動容器是通過containerd-shim去調用runc來啟動容器的,runc 啟動完容器后本身會直接退出,containerd-shim 則會成為容器進程的父進程, 負責收集容器進程的狀態, 上報給 containerd, 并在容器中 pid 為 1 的進程退出后接管容器中的子進程進行清理, 確保不會出現僵尸進程。
Containerd 是一個工業級標準的容器運行時,它強調簡單性、健壯性和可移植性,containerd 可以負責干下面這些事情:
管理容器的生命周期(從創建容器到銷毀容器)
拉取/推送容器鏡像
存儲管理(管理鏡像及容器數據的存儲)
調用 runc 運行容器(與 runc 等容器運行時交互)
管理容器網絡接口及網絡
2)containerd安裝
下面步驟為在Rocky8/RHEL8上安裝containerd
先安裝yum-utils工具
yum install -y yum-utils
配置Docker官方的yum倉庫,如果做過,可以跳過
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安裝containerd
yum install containerd.io -y
啟動服務并設置為開機自啟
systemctl enable containerd systemctl start containerd
3)containerd命令行工具ctr
Ctr就是containerd的命令行工具,可以用來執行和管理containerd中的任務。ctr主要用于開發和調試,而不是在生產環境中使用。常見用法如下:
查看containerd版本
ctr version
拉取鏡像
ctr images pull docker.io/library/busybox:latest #其中images可以簡寫為i
列出本地鏡像
ctr images list #或者簡寫 ctr i ls
修改tag
ctr i tag docker.io/library/busybox:latest busybox:latest
刪除鏡像
ctr i rm docker.io/library/busybox:latest
運行容器
ctr run -d busybox:latest busybox
列出運行的容器
ctr containers list #或者簡寫為 ctr c ls
列出任務
ctr tasks ls #或者簡寫 ctr t ls
容器里執行命令
ctr t exec --exec-id 1860 busybox ls #1860為任務ID
進入容器內部
ctr t exec -t --exec-id 1860 busybox sh
刪除容器
ctr t kill -s SIGKILL busybox #先殺掉進程 ctr c rm busybox #再刪除容器
總之,這個ctr工具跟docker的命令行工具用起來還是有不少差異的。
審核編輯:湯梓紅
-
接口
+關注
關注
33文章
8257瀏覽量
149962 -
容器
+關注
關注
0文章
490瀏覽量
21986 -
進程
+關注
關注
0文章
197瀏覽量
13928 -
鏡像
+關注
關注
0文章
158瀏覽量
10651 -
Docker
+關注
關注
0文章
446瀏覽量
11738
原文標題:Containerd基礎用法
文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論