0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Containerd基礎(chǔ)用法

阿銘linux ? 來源:阿銘linux ? 2023-04-11 10:50 ? 次閱讀

1)關(guān)于Containerd的基礎(chǔ)知識

從 Docker 1.11 版本開始,Docker 容器運(yùn)行就不是簡單通過 Docker Daemon 來啟動(dòng)了,而是通過集成containerd、runc等多個(gè)組件來完成的。 雖然Docker Daemon守護(hù)進(jìn)程模塊在不停地重構(gòu),但是基本功能和定位沒有太大的變化,一直都是CS架構(gòu),守護(hù)進(jìn)程負(fù)責(zé)和Docker Client端交互,并管理Docker鏡像和容器。 現(xiàn)在的架構(gòu)中組件containerd就會(huì)負(fù)責(zé)集群節(jié)點(diǎn)上容器的生命周期管理,并向上為Docker Daemon提供gRPC接口。

a9cc0438-d812-11ed-bfe3-dac502259ad0.png

Containerd-shim是Containerd的一個(gè)插件,它用來扮演進(jìn)程管理器的角色,接收來自containerd的命令,并在容器內(nèi)部創(chuàng)建和管理進(jìn)程。它可以與Runc協(xié)同工作,使得容器的創(chuàng)建、啟動(dòng)、停止、暫停和恢復(fù)等操作都能夠得到有效的處理。一句話,創(chuàng)建容器這件事是由Containerd-shim來完成的。

我們都知道,創(chuàng)建容器是需要做一些namespaces和cgroups的配置,以及掛載root文件系統(tǒng)的操作。這些操作其實(shí)已經(jīng)有了標(biāo)準(zhǔn)的規(guī)范,那就是OCI(開放容器標(biāo)準(zhǔn))。

OCI本質(zhì)上就是一個(gè)規(guī)范文檔,主要規(guī)定了容器鏡像的結(jié)構(gòu)標(biāo)準(zhǔn)以及容器接收操作指令的標(biāo)準(zhǔn),比如create、start、stop、delete 等這些命令。而Runc其實(shí)就是按照這個(gè)OCI的各種規(guī)范來實(shí)現(xiàn)管理容器的。

所以真正啟動(dòng)容器是通過containerd-shim去調(diào)用runc來啟動(dòng)容器的,runc 啟動(dòng)完容器后本身會(huì)直接退出,containerd-shim 則會(huì)成為容器進(jìn)程的父進(jìn)程, 負(fù)責(zé)收集容器進(jìn)程的狀態(tài), 上報(bào)給 containerd, 并在容器中 pid 為 1 的進(jìn)程退出后接管容器中的子進(jìn)程進(jìn)行清理, 確保不會(huì)出現(xiàn)僵尸進(jìn)程。

Containerd 是一個(gè)工業(yè)級標(biāo)準(zhǔn)的容器運(yùn)行時(shí),它強(qiáng)調(diào)簡單性、健壯性和可移植性,containerd 可以負(fù)責(zé)干下面這些事情:

管理容器的生命周期(從創(chuàng)建容器到銷毀容器)

拉取/推送容器鏡像

存儲(chǔ)管理(管理鏡像及容器數(shù)據(jù)的存儲(chǔ))

調(diào)用 runc 運(yùn)行容器(與 runc 等容器運(yùn)行時(shí)交互)

管理容器網(wǎng)絡(luò)接口及網(wǎng)絡(luò)

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

啟動(dòng)服務(wù)并設(shè)置為開機(jī)自啟

systemctl enable containerd
systemctl start containerd

3)containerd命令行工具ctr


Ctr就是containerd的命令行工具,可以用來執(zhí)行和管理containerd中的任務(wù)。ctr主要用于開發(fā)和調(diào)試,而不是在生產(chǎn)環(huán)境中使用。常見用法如下:


查看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

運(yùn)行容器

ctr run  -d  busybox:latest busybox

列出運(yùn)行的容器

ctr containers  list  #或者簡寫為
ctr c  ls

列出任務(wù)

ctr tasks  ls #或者簡寫
ctr t  ls

容器里執(zhí)行命令

ctr t exec --exec-id 1860 busybox ls  #1860為任務(wù)ID

進(jìn)入容器內(nèi)部

ctr t exec -t --exec-id 1860 busybox sh

刪除容器

ctr t kill -s SIGKILL busybox #先殺掉進(jìn)程
ctr c  rm  busybox #再刪除容器

總之,這個(gè)ctr工具跟docker的命令行工具用起來還是有不少差異的。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8451

    瀏覽量

    150733
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    492

    瀏覽量

    22028
  • 進(jìn)程
    +關(guān)注

    關(guān)注

    0

    文章

    201

    瀏覽量

    13939
  • 鏡像
    +關(guān)注

    關(guān)注

    0

    文章

    162

    瀏覽量

    10689
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    453

    瀏覽量

    11792

原文標(biāo)題:Containerd基礎(chǔ)用法

文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Containerd常見命令操作

    作為接替 Docker 運(yùn)行時(shí)的 Containerd 在早在 Kubernetes1.7 時(shí)就能直接與 Kubelet 集成使用,只是大部分時(shí)候我們因熟悉 Docker,在部署集群時(shí)采用了默認(rèn)
    的頭像 發(fā)表于 08-30 10:08 ?4866次閱讀

    SQLx的基礎(chǔ)用法和進(jìn)階用法

    SQLx是一個(gè)Rust語言的異步SQL數(shù)據(jù)庫訪問庫,支持多種數(shù)據(jù)庫,包括PostgreSQL、MySQL、SQLite等。本教程將以SQLite為例,介紹SQLx的基礎(chǔ)用法和進(jìn)階用法。 基礎(chǔ)用法
    的頭像 發(fā)表于 09-19 14:29 ?2214次閱讀

    Stream模塊的基礎(chǔ)用法和進(jìn)階用法

    有用。在本教程中,我們將介紹 Stream 模塊的基礎(chǔ)用法和進(jìn)階用法,并提供示例。 基礎(chǔ)用法 在本節(jié)中,我們將介紹 Stream 模塊的基礎(chǔ)用法,并提供基礎(chǔ)示例。 從 Vec 中創(chuàng)建
    的頭像 發(fā)表于 09-19 15:33 ?1133次閱讀

    常用燈頭規(guī)格及用法介紹

    常用燈頭規(guī)格及用法介紹 簡述常用燈頭規(guī)格及用法介紹
    發(fā)表于 04-19 15:40 ?56次下載

    狀態(tài)機(jī)原理及用法

    狀態(tài)機(jī)原理及用法狀態(tài)機(jī)原理及用法狀態(tài)機(jī)原理及用法
    發(fā)表于 03-15 15:25 ?0次下載

    電阻的巧妙用法

    電阻的巧妙用法
    發(fā)表于 12-16 12:59 ?0次下載

    MSF及Unicorn的介紹及用法

    MSF及Unicorn的介紹及用法
    發(fā)表于 09-07 15:09 ?3次下載
    MSF及Unicorn的介紹及<b class='flag-5'>用法</b>

    AI UX :設(shè)計(jì)助手用法

    本集討論了具有高投資回報(bào)率的用法類型,以及如何以及為什么要優(yōu)先使用幫助用法。
    的頭像 發(fā)表于 11-13 06:40 ?1852次閱讀

    重磅!阿里巴巴工程師獲得 containerd 社區(qū)席位,與社區(qū)共建云時(shí)代容器標(biāo)準(zhǔn)

    重磅!阿里巴巴工程師獲得 containerd 社區(qū)席位,與社區(qū)共建云時(shí)代容器標(biāo)準(zhǔn)11 月 29 日,CNCF containerd 社區(qū)正式宣布:兩位阿里巴巴工程師正式獲得 containerd
    發(fā)表于 12-11 17:25 ?306次閱讀

    attribute 用法 section 部分

    attribute 用法 section 部分
    發(fā)表于 11-16 18:21 ?87次下載
    attribute <b class='flag-5'>用法</b> section 部分

    Containerd控制runC的守護(hù)進(jìn)程

    ./oschina_soft/containerd.zip
    發(fā)表于 05-11 10:05 ?0次下載
    <b class='flag-5'>Containerd</b>控制runC的守護(hù)進(jìn)程

    CMake用法詳解

    CMake用法詳解
    發(fā)表于 10-25 16:28 ?2次下載

    Containerd的Bug導(dǎo)致容器被重建!如何避免?

    該 issue 在 2022 年 12 月 20 日被提交,RKE2 團(tuán)隊(duì)在 2023 年 1 月 6 日緊急合并了 containerd 中修復(fù)該 issue 的 commit,發(fā)布了 k3s-containerd v1.6.14+k3s1 版本,并發(fā)布了新的 rke2
    的頭像 發(fā)表于 02-10 13:55 ?1471次閱讀

    分享《verdi用法小結(jié)》的pdf

    分享Verdi用法小結(jié)的pdf文檔
    的頭像 發(fā)表于 02-18 20:21 ?1143次閱讀
    分享《verdi<b class='flag-5'>用法</b>小結(jié)》的pdf

    pcb插針的用法

    pcb插針的用法
    的頭像 發(fā)表于 12-13 16:58 ?1738次閱讀