Containerd 介绍

Containerd 是一个开源的容器运行时,主要用于管理容器的生命周期,包括镜像传输、容器创建、运行、停止和删除等功能。它是 Docker 的核心组件之一,也可以独立于 Docker 使用。

主要功能

  1. 容器管理:
  • 创建、启动、停止和删除容器。
  • 管理容器的网络和存储。
  1. 镜像管理:
  • 拉取和推送容器镜像。
  • 管理本地镜像存储。
  1. 运行时接口:
  • 提供与各种容器运行时(如 runc)的接口。
  • 支持 OCI(开放容器倡议)标准。
  1. 事件监控:
  • 监控容器生命周期中的事件,如启动、停止等。

组件架构

Containerd 的架构主要由以下部分组成:

  • gRPC API: 提供与外部工具(如 Kubernetes、Docker CLI)通信的接口。
  • 容器运行时: 负责实际的容器执行,如 runc。
  • 镜像服务: 处理镜像的拉取和存储。

使用场景

  • Kubernetes: Containerd 是 Kubernetes 的常用容器运行时,提供高效的容器管理。
  • 微服务: 适用于构建微服务架构中的容器管理平台。
  • CI/CD: 在持续集成和持续部署中用于快速构建和管理容器。

在使用 ctr 命令时,挂载主机目录到容器的功能通常不直接支持,因为 ctr 更加低级,主要用于管理容器的生命周期。不过,你可以通过一些步骤来实现类似的效果。

使用 ctr 挂载主机目录

  1. 创建容器:首先,创建容器时不直接挂载。
ctr run -d --name mycontainer myimage
  1. 进入容器:使用 ctr 进入容器。
ctr t exec -t mycontainer /bin/sh
  1. 手动挂载:在容器内使用 mount 命令手动挂载主机目录。这需要容器具有相应的权限,且主机目录需要在容器的命名空间中可用。
mount --bind /path/on/host /path/in/container

启停容器

查看容器

ctr containers list

查看信息

ctr containers info <container_id>

查看容器进程

ctr task list

停止容器

ctr task stop <PID>