在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Containerd常見命令操作

馬哥Linux運維 ? 來源:博客園 ? 作者:: 大數據老司機 ? 2022-08-30 10:08 ? 次閱讀

一、概述

作為接替 Docker 運行時的 Containerd 在早在 Kubernetes1.7 時就能直接與 Kubelet 集成使用,只是大部分時候我們因熟悉 Docker,在部署集群時采用了默認的 dockershim。在V1.24起的版本的 kubelet 就徹底移除了dockershim,改為默認使用Containerd了,當然也使用 cri-dockerd 適配器來將 Docker Engine 與 Kubernetes 集成。可以參考官方文檔:

https://kubernetes.io/zh-cn/docs/setup/production-environment/container-runtimes/#docker

8d9de8e4-27a0-11ed-ba43-dac502259ad0.png

二、Containerd 常見命令操作

更換 Containerd 后,以往我們常用的 docker 命令也不再使用,取而代之的分別是 crictlctr 兩個命令客戶端。

  • crictl 是遵循 CRI 接口規范的一個命令行工具,通常用它來檢查和管理kubelet節點上的容器運行時和鏡像。
  • ctrcontainerd 的一個客戶端工具。
  • ctr -v 輸出的是 containerd 的版本,crictl -v 輸出的是當前 k8s 的版本,從結果顯而易見你可以認為 crictl 是用于 k8s 的。
  • 一般來說你某個主機安裝了 k8s 后,命令行才會有 crictl 命令。而 ctr 是跟 k8s 無關的,你主機安裝了 containerd 服務后就可以操作 ctr 命令。

使用crictl命令之前,需要先配置/etc/crictl.yaml如下:

runtime-endpoint:unix:///run/containerd/containerd.sock
image-endpoint:unix:///run/containerd/containerd.sock
timeout:10
debug:false

也可以通過命令進行設置:

crictlconfigruntime-endpointunix:///run/containerd/containerd.sock
crictlconfigimage-endpointunix:///run/containerd/containerd.sock
命令 docker ctr(containerd) crictl(kubernetes)
查看運行的容器 docker ps ctr task ls/ctr container ls crictl ps
查看鏡像 docker images ctr image ls crictl images
查看容器日志 docker logs crictl logs
查看容器數據信息 docker inspect ctr container info crictl inspect
查看容器資源 docker stats crictl stats
啟動/關閉已有的容器 docker start/stop ctr task start/kill crictl start/stop
運行一個新的容器 docker run ctr run 無(最小單元為 pod)
標簽 docker tag ctr image tag
創建一個新的容器 docker create ctr container create crictl create
導入鏡像 docker load ctr image import
導出鏡像 docker save ctr image export
刪除容器 docker rm ctr container rm crictl rm
刪除鏡像 docker rmi ctr image rm crictl rmi
拉取鏡像 docker pull ctr image pull ctictl pull
推送鏡像 docker push ctr image push
登錄或在容器內部執行命令 docker exec crictl exec
清空不用的容器 docker image prune crictl rmi --prune

更多命令操作,可以直接在命令行輸入命令查看幫助。

docker--help
ctr--help
crictl--help

由于 Containerd 也有 namespaces 的概念,對于上層編排系統的支持,ctr 客戶端 主要區分了 3 個命名空間分別是k8s.iomobydefault,以上我們用crictl操作的均在k8s.io命名空間,使用ctr 看鏡像列表就需要加上-n 參數。crictl 是只有一個k8s.io命名空間,但是沒有-n 參數。

【溫馨提示】ctr images pull 拉取的鏡像默認放在default,而 crictl pull 和 kubelet 默認拉取的鏡像都在 k8s.io 命名空間下。所以通過ctr導入鏡像的時候特別注意一點,最好指定命名空間。

#注意-n不能放在命令最后面,下面幾行查看的鏡像是一樣的
ctr-n=k8s.ioimagels
ctr-nk8s.ioimagels

# crictl 沒有-n參數,操作都在`k8s.io`命名空間下。
crictlimagels
crictlimages
#crictlimagelist=ctr-n=k8s.ioimagelist
#crictlimagels=ctr-n=k8s.ioimagels
#crictlimages=ctr-n=k8s.ioimagelist
#crictlimages=ctr-n=k8s.ioimagels

#使用ctr命令指定命名空間導入鏡像
ctr-n=k8s.ioimageimportdashboard.tar

#查看鏡像,可以看到可以查詢到了
crictlimages
8dbebd3a-27a0-11ed-ba43-dac502259ad0.png

三、containerd 客戶端工具 nerdctl

推薦使用 nerdctl,使用效果與 docker 命令的語法一致,github 下載鏈接:

https://github.com/containerd/nerdctl/releases

  • 精簡 (nerdctl--linux-amd64.tar.gz): 只包含 nerdctl
  • 完整 (nerdctl-full--linux-amd64.tar.gz):包含 containerd, runc, and CNI 等依賴

nerdctl 的目標并不是單純地復制 docker 的功能,它還實現了很多 docker 不具備的功能,例如延遲拉取鏡像(lazy-pulling)、鏡像加密(imgcrypt)等。具體看 nerdctl。

8e0078e2-27a0-11ed-ba43-dac502259ad0.png
延遲拉取鏡像功能可以參考這篇文章:Containerd 使用 Stargz Snapshotter 延遲拉取鏡像

https://icloudnative.io/posts/startup-containers-in-lightning-speed-with-lazy-image-distribution-on-containerd/

1)安裝 nerdctl(精簡版)

wgethttps://github.com/containerd/nerdctl/releases/download/v0.22.2/nerdctl-0.22.2-linux-amd64.tar.gz
#解壓
tar-xfnerdctl-0.22.2-linux-amd64.tar.gz

ln-s/opt/k8s/nerdctl/nerdctl/usr/local/bin/nerdctl

2)安裝 nerdctl(完整版,這里不裝)

wgethttps://github.com/containerd/nerdctl/releases/download/v0.22.2/nerdctl-full-0.22.2-linux-amd64.tar.gz
tar-xfnerdctl-full-0.16.0-linux-amd64.tar.gz-C/usr/local/

cp/usr/local/lib/systemd/system/*.service/etc/systemd/system/

啟動服務 buildkit

systemctlenablebuildkitcontainerd--now
systemctlstatusbuildkitcontainerd

3)安裝 buildkit 支持構建鏡像

buildkit GitHub 地址:

https://github.com/moby/buildkit

使用精簡版 nerdctl 無法直接通過 containerd 構建鏡像,需要與 buildkit 組全使用以實現鏡像構建。當然你也可以安裝上面的完整 nerdctl;buildkit 項目是 Docker 公司開源出來的一個構建工具包,支持 OCI 標準的鏡像構建。它主要包含以下部分:

  • 服務端 buildkitd,當前支持 runc 和 containerd 作為 worker,默認是 runc;
  • 客戶端 buildctl,負責解析 Dockerfile,并向服務端 buildkitd 發出構建請求。

buildkit 是典型的C/S 架構,client 和 server 可以不在一臺服務器上。而 nerdctl 在構建鏡像方面也可以作為 buildkitd 的客戶端。

#https://github.com/moby/buildkit/releases
wgethttps://github.com/moby/buildkit/releases/download/v0.10.4/buildkit-v0.10.4.linux-amd64.tar.gz

tar-xfbuildkit-v0.10.4.linux-amd64.tar.gz-C/usr/local/

配置 buildkit 的啟動文件,可以從這里下載:

https://github.com/moby/buildkit/tree/master/examples/systemd

buildkit 需要配置兩個文件

  • /usr/lib/systemd/system/buildkit.socket
cat>/usr/lib/systemd/system/buildkit.socket<
  • /usr/lib/systemd/system/buildkit.service
cat>/usr/lib/systemd/system/buildkit.service<#Replaceruncbuildswithcontainerdbuilds
ExecStart=/usr/local/bin/buildkitd--addrfd://
[Install]
WantedBy=multi-user.target
EOF

啟動 buildkit

systemctldaemon-reload
systemctlenablebuildkit--now
8e1bef82-27a0-11ed-ba43-dac502259ad0.png

四、實戰操作

1)修改 containerd 配置文件

可以參考我之前的文章:

containerdconfigdefault>/etc/containerd/config.toml

配置如下:

[plugins."io.containerd.grpc.v1.cri".registry]
config_path=""

[plugins."io.containerd.grpc.v1.cri".registry.auths]

[plugins."io.containerd.grpc.v1.cri".registry.configs]
[plugins."io.containerd.grpc.v1.cri".registry.configs."myharbor-minio.com".tls]
insecure_skip_verify=true#跳過認證
ca_file="/etc/containerd/myharbor-minio.com/ca.crt"
[plugins."io.containerd.grpc.v1.cri".registry.configs."myharbor-minio.com".auth]
username="admin"
password="Harbor12345"

[plugins."io.containerd.grpc.v1.cri".registry.headers]

[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."myharbor-minio.com"]
endpoint=["https://myharbor-minio.com"]

937667a0-27a0-11ed-ba43-dac502259ad0.png
重啟 containerd

#重新加載配置
systemctldaemon-reload
#重啟containerd
systemctlrestartcontainerd

注意:這個配置文件是給crictlkubelet使用,ctr是不可以用這個配置文件的,ctr 不使用 CRI,因此它不讀取 plugins."io.containerd.grpc.v1.cri"配置。

2)ctr 拉取推送鏡像

#推送鏡像到harbor
ctr--namespace=k8s.ioimagespushmyharbor-minio.com/bigdata/minio:2022.8.22-debian-11-r0--skip-verify--useradmin:Harbor12345

#--namespace=k8s.io指定命名空間,不是必須,根據環境而定
#--skip-verify跳過認證
#--user指定harbor用戶名及密碼

ctrimagespull--useradmin:Harbor12345--tlscacert=/etc/containerd/myharbor-minio.com/ca.crtmyharbor-minio.com/bigdata/minio:2022.8.22-debian-11-r0

不想-u user:password 每次必須使用 ctr pull/ctr push, 可以使用nerdctl

3)鏡像構建

cat>Dockerfile<echo'HelloNerdctlFromContainerd'>/usr/share/nginx/html/index.html
EOF

然后在文件所在目錄執行鏡像構建命令:

#不加-n指定命名空間,crictl看不到,kubelet也不能使用它,默認在default命名空間下
nerdctl-nk8s.iobuild-tnginx:nerctl-f./Dockerfile.
###參數解釋
#-t:指定鏡像名稱
# . :當前目錄Dockerfile
#-f:指定Dockerfile路徑
#--no-cache:不緩存
93885e24-27a0-11ed-ba43-dac502259ad0.png

4)打標簽 tag

# crictl沒有tag命令,只能使用nerdctl和ctr,必須指定命名空間,要不然kubelet無法使用。
ctr-nk8s.ioitag
nerdctl-nk8s.iotagnginx:nerctlmyharbor-minio.com/bigdata/nginx:nerctl
#ctr-nk8s.iotagnginx:nerctlmyharbor-minio.com/bigdata/nginx:nerctl
#查看鏡像
nerdctl-nk8s.ioimagesmyharbor-minio.com/bigdata/nginx:nerctl

5)將鏡像推送到 Harbor

第一種情況:http方式,配置如下:

#以下兩個哪個都可以
#mkdir-p/etc/docker/certs.d/myharbor-minio.com:443
mkdir-p/etc/containerd/certs.d/myharbor-minio.com:443

cat>/etc/containerd/certs.d/myharbor-minio.com:443/hosts.toml<"https://docker.io"

[host."http://myharbor-minio.com:80"]
capabilities=["pull","resolve","push"]
#skip_verify=true
#ca="ca.crt"#相對路徑
#ca="/opt/auth/ca.crt"#絕對路徑
#ca=["/opt/auth/ca.crt"]
#ca=["ca.crt"]
#client=[["/opt/auth/nginx.cclinux.cn.crt","/opt/auth/nginx.cclinux.cn.key"]]

EOF

第一種情況:https方式,配置如下:

#以下兩個哪個都可以
#mkdir-p/etc/docker/certs.d/myharbor-minio.com:443
mkdir-p/etc/containerd/certs.d/myharbor-minio.com:443

cat>/etc/containerd/certs.d/myharbor-minio.com:443/hosts.toml<"https://docker.io"

[host."https://myharbor-minio.com:443"]
capabilities=["pull","resolve","push"]
skip_verify=true
#ca="ca.crt"#相對路徑
#ca="/opt/auth/ca.crt"#絕對路徑
#ca=["/opt/auth/ca.crt"]
ca=["/etc/containerd/myharbor-minio.com/ca.crt"]
#client=[["/opt/auth/nginx.cclinux.cn.crt","/opt/auth/nginx.cclinux.cn.key"]]
EOF

通過 nerdctl 登錄 harbor

echoHarbor12345|nerdctllogin--username"admin"--password-stdinmyharbor-minio.com:443

#nerdctllogin--username"admin"--passwordHarbor12345myharbor-minio.com:443

#登出
#nerdctllogout
93980298-27a0-11ed-ba43-dac502259ad0.png

開始將鏡像推送到 harbor

###推送到Harbor
#--insecure-registryskipsverifyingHTTPScerts,andallowsfallingbacktoplainHTTP
nerdctl--insecure-registry--namespace=k8s.iopushmyharbor-minio.com/bigdata/nginx:nerctl
#ctr--namespace=k8s.ioimagespushmyharbor-minio.com/bigdata/nginx:nerctl--skip-verify--useradmin:Harbor12345

#--namespace=k8s.io指定命名空間,跟-n一樣,不是必須,根據環境而定
#--skip-verify跳過認證
#--user指定harbor用戶名及密碼
93aefb24-27a0-11ed-ba43-dac502259ad0.png

Containerd ctr,crictl,nerdctl 客戶端命令介紹與實戰操作就到這里了,有疑問的小伙伴歡迎給我留言哦!

審核編輯:湯梓紅


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 容器
    +關注

    關注

    0

    文章

    498

    瀏覽量

    22087
  • 命令
    +關注

    關注

    5

    文章

    692

    瀏覽量

    22064
  • Docker
    +關注

    關注

    0

    文章

    489

    瀏覽量

    11892

原文標題:Containerd ctr、crictl、nerdctl 客戶端命令介紹與實戰操作

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    常見的shell命令之文件操作相關命令

    命令命令:cp英文全拼:copy功能:實現文件的復制操作參數:cp [選項] 源文件/目錄目的文件/目錄示例:5、mv文件改名移動命令:mv英文全拼:move功能:可以將一個目錄移到另
    發表于 08-19 10:01

    常見的shell命令之其他命令

    用戶的信息用法:who示例:5、PS查詢進程命令命令:ps功能:顯示當前操作系統中由該用戶運行的進程列表常見參數:用法:示例1:ps示例2:ps -el查看所有進程的詳細信息示例3:使
    發表于 08-21 09:49

    嵌入式學習-常見的shell命令之其他命令

    用戶的信息用法:who示例:5、PS查詢進程命令命令:ps功能:顯示當前操作系統中由該用戶運行的進程列表常見參數:用法:示例1:ps示例2:ps -el查看所有進程的詳細信息示例3:使
    發表于 08-22 09:42

    Linux常見命令有哪些

    摘要:這是對周立功編著的《嵌入式Linux開發教程》的第7期連載。本期刊載內容有關LinuxLinux常見命令中的導航命令、目錄命令和文件命令
    發表于 10-28 10:06

    學習常見的Linux命令

    一、學習常見的Linux命令(1)文件操作命令主要包括查看文件命令(ls)、顯示文件內容命令(c
    發表于 11-05 08:43

    MongoDB常用操作命令大全

    本文主要是對MongoDB常用操作命令解析。如果你想創建一個“myTest”的數據庫,先運行use myTest命令,之后就做一些操作(如:db.createCollection(‘u
    的頭像 發表于 02-07 10:15 ?1971次閱讀

    重磅!阿里巴巴工程師獲得 containerd 社區席位,與社區共建云時代容器標準

    重磅!阿里巴巴工程師獲得 containerd 社區席位,與社區共建云時代容器標準11 月 29 日,CNCF containerd 社區正式宣布:兩位阿里巴巴工程師正式獲得 containerd
    發表于 12-11 17:25 ?343次閱讀

    Git常見的誤區和命令行工具等綜述

    Git常見的誤區和命令行工具等綜述
    發表于 08-31 09:51 ?0次下載

    嵌入式Linux開發教程:Linux常見命令(上篇)

    摘要:這是對周立功編著的《嵌入式Linux開發教程》的第7期連載。本期刊載內容有關LinuxLinux常見命令中的導航命令、目錄命令和文件命令
    發表于 10-21 13:36 ?11次下載
    嵌入式Linux開發教程:Linux<b class='flag-5'>常見</b><b class='flag-5'>命令</b>(上篇)

    基礎的Linux操作命令

    IC設計是在linux環境下,很多操作需要在Terminal中進行,因此想要學習IC設計,就必須先需要熟悉Linux環境、掌握基礎的Linux操作命令;網上也有很多系統的教程,可以系統去學一學,當然
    的頭像 發表于 03-15 13:42 ?1551次閱讀

    Containerd控制runC的守護進程

    ./oschina_soft/containerd.zip
    發表于 05-11 10:05 ?0次下載
    <b class='flag-5'>Containerd</b>控制runC的守護進程

    Containerd的Bug導致容器被重建!如何避免?

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

    Containerd基礎用法

    從 Docker 1.11 版本開始,Docker 容器運行就不是簡單通過 Docker Daemon 來啟動了,而是通過集成containerd、runc等多個組件來完成的。 雖然Docker
    的頭像 發表于 04-11 10:50 ?802次閱讀

    solidworks基本操作命令的技巧

    在零件設計的過程中,可以隨意插入其他特征的零件與之進行操作和修改,有別于裝配體中的裝配命令,還有當一個實體又很多圓角過渡造型比較復雜的時候,可以用分割的命令將其分成兩個部分,然后分別對他們進行造型上的設計,例如,抽殼。
    的頭像 發表于 07-26 15:47 ?1489次閱讀

    結構操作系統命令參考

    電子發燒友網站提供《結構操作系統命令參考.pdf》資料免費下載
    發表于 08-28 10:30 ?0次下載
    結構<b class='flag-5'>操作</b>系統<b class='flag-5'>命令</b>參考
    主站蜘蛛池模板: 伊人久久大香线蕉综合电影| 天天视频观看| 青草国产在线视频| 美日韩毛片| 日本69sex护士wwxx| 日日干狠狠干| 国内精品手机在线观看视频| 台湾三级毛片| 一级特黄特色的免费大片视频| 久久国产精品永久免费网站| 加勒比色| 欧美成人精品| 狠狠色成人综合首页| 口述他拿舌头进去我下面好爽| 色聚网久久综合| 亚洲天堂免费在线| 一级黄色片欧美| 美女扒开尿口让男人捅| 最近2018中文字幕免费视频| 老师在办公室被躁得舒服小说| 在线播放 你懂的| 三级免费观看| 久久激情综合网| 亚洲免费一级片| 午夜撸| 美女被上视频| 国产手机在线看片| 一区二区在线观看高清| 亚洲男人的天堂久久香蕉网| h网址在线观看| 亚洲偷偷| 亚洲精品香蕉婷婷在线观看| 欧美三级在线视频| 免费一级特黄a| 久久中文字幕综合婷婷| xxx86日本人| 国产一级免费视频| 免费的黄视频| 欧美性天天影院| 伊人久久大香线蕉综合爱婷婷| 国产伦精品一区二区三区网站|