“容器运行时”须知须会

前言

不深入原理,主要阐述云原生应用或平台者 需要掌握的容器运行时的相关知识。

相关概念

1、docker 由 docker-client ,dockerd,containerd,docker-shim,runc组成,所以containerd是docker的基础组件之一。

2、containerd 相比于docker , 多了 namespace 概念,每个 image 和 container 都会在各自的namespace下可见。

3、从k8s的角度看,可以选择 containerd 或 docker 作为运行时组件:其中 containerd 调用链更短,组件更少,更稳定,占用节点资源更少。所以k8s后来都默认使用 containerd 。

  • docker作为k8s容器运行时,调用关系: kubelet --> dockershim (在 kubelet 进程中) --> dockerd --> containerd

  • container作为 k8s 容器运行时,调用关系:kubelet --> cri plugin(在 containerd 进程中) --> containerd

命令区分

  • ctr 是 containerd 的一个客户端工具。

  • crictl 是 CRI 兼容的容器运行时命令行接口,可以使用它来检查和调试 k8s 节点上的容器运行时和用程序。

  • ctr -v 输出的是 containerd 的版本,crictl -v 输出的是当前 k8s 的版本,从结果显而易见你可以认为 crictl 是用于 k8s 的。

一般来说你某个主机安装了 k8s 后,命令行才会有 crictl 命令。而 ctr 是跟 k8s 无关的,你主机安装了 containerd 服务后就可以操作 ctr 命令。

常用命令

正常情况下,"crictl ps"能查到的容器 也可以通过"ctr -n k8s.io containers ls" 查到

修改配置

Docker

bash 复制代码
systemctl status docker
vim /etc/docker/daemon.json
systemctl restart docker

Containerd

bash 复制代码
systemctl status containerd
vim /etc/containerd/config.toml
systemctl restart containerd

参考文档

docker、containerd、ctr、crictl 的联系_docker_catoop-华为云开发者联盟

相关推荐
todoitbo2 小时前
群晖NAS部署JmalCloud:Docker安装、文件管理、博客与公网访问完整教程
运维·docker·容器
是枚小菜鸡儿吖9 小时前
Home Assistant跨品牌智能家居教程:Docker部署、米家接入、vivo桥接与远程访问
docker·容器·智能家居
螺蛳粉 螺蛳粉12 小时前
第 02 篇:镜像分层与 containerd 2.x 实战:SystemdCgroup 与 pause 镜像配置踩坑(底座认知 02)
docker·云原生·容器·kubernetes·etcd·containerd·kube-apiserver
wefg112 小时前
【Docker】镜像相关指令
运维·docker·容器
java_logo14 小时前
Docker 部署 DPanel:轻松搭建轻量容器管理平台
运维·docker·容器·podman·容器管理·dpanel·轩辕镜像
死磕音视频14 小时前
Open WebUI 入门:用 Docker 装上本地对话界面并连接 Ollama
docker·ollama·本地大模型·open webui
分布式存储与RustFS14 小时前
CI 老被 Docker Hub 的 429 卡住,自建 Registry 把镜像搬进内网
运维·docker·开源·镜像仓库·对象存储·ci·rustfs
n1121215 小时前
Docker 容器时区错 8 小时:3 个坑
运维·docker·容器·故障排查·服务器运维·容器时区
慈云数据16 小时前
用 DSH 辅助部署一个网站监控平台:Uptime Kuma + Docker 实战
运维·docker·容器
螺蛳粉 螺蛳粉16 小时前
第 03 篇:为什么 K8s 的最小调度单元是 Pod 而不是容器:pause 容器与边车模式(底座认知 03)
docker·云原生·容器·kubernetes·etcd·运维排障·kube-apiserver