容器运行时 containerd 学习笔记

容器运行时 containerd 学习笔记

💡 原文英文,约2000词,阅读约需8分钟。
📝

内容提要

本文介绍了使用 containerd 和 CNI 插件管理容器网络,包括安装和配置、使用 veth 和网桥设备、操作 ctr 命令、资源隔离、使用 crictl 客户端工具和配置文件。

🎯

关键要点

  • 2016年12月,Docker公司将containerd项目从Docker Engine中分离,形成独立的开源项目。

  • containerd主要用于集成到更上层的系统,如Docker Swarm、Kubernetes等。

  • containerd通过gRPC API管理容器的整个生命周期,包括镜像拉取、容器启动和停止等。

  • containerd的核心由Services、Content Store、Snapshotter和Runtime组成。

  • containerd支持多种OCI runtime,最常用的是runc。

  • OCI全称为开放容器倡议,致力于创建开放的容器格式和运行时标准。

  • containerd与Docker和Kubernetes的关系密切,Docker通过containerd处理容器相关事务。

  • Kubernetes最初通过Docker API管理容器,后推出CRI标准以支持多种容器运行时。

  • containerd 1.0开始支持CRI接口,简化了Kubernetes与containerd的通信。

  • 安装containerd需要下载并解压到指定目录,并使用systemd启动服务。

  • 安装runc是containerd运行的必要步骤,需将其放置在系统路径中。

  • CNI插件用于管理容器网络,提供容器网络接口的解决方案。

  • CNI插件通过JSON配置文件进行管理,支持多种网络类型。

  • 使用ctr命令行工具可以对containerd进行基本操作,包括镜像和容器管理。

  • ctr命令支持查看、拉取、删除镜像,创建、删除容器等功能。

  • 命名空间用于资源隔离,Docker和Kubernetes分别使用不同的命名空间。

  • nerdctl是一个更友好的命令行工具,支持Dockerfile构建镜像和docker-compose管理容器。

  • crictl是Kubernetes提供的CRI客户端工具,可以操作containerd。

➡️

继续阅读