四时宝库

程序员的知识宝库

深入理解 Containerd 的容器与镜像命令运维操作实践

引言

在容器化应用的运维过程中,容器和镜像管理是核心任务之一。Containerd 作为一个高效的容器运行时,为容器和镜像管理提供了一系列强大的命令行工具。本文将深入解析 Containerd 的容器与镜像命令,结合实际操作案例,帮助您掌握 Containerd 的运维技巧。

Containerd 简介

Containerd 是一个高性能的容器运行时,负责管理容器的生命周期。它被广泛用于 Kubernetes 等容器编排系统中。Containerd 提供了一组命令行工具,通过 ctr 命令来与容器和镜像进行交互。

Containerd 的安装

在开始实践操作之前,确保您已经安装了 Containerd。以下是安装 Containerd 的步骤:

  1. 下载并安装 Containerd:
wget https://github.com/containerd/containerd/releases/download/v1.4.12/containerd-1.4.12-linux-amd64.tar.gz
sudo tar -C /usr/local -xzf containerd-1.4.12-linux-amd64.tar.gz
  1. 配置系统服务:
sudo wget -O /etc/systemd/system/containerd.service https://raw.githubusercontent.com/containerd/containerd/main/containerd.service
sudo systemctl daemon-reload
sudo systemctl enable --now containerd
  1. 验证安装:
containerd --version

镜像管理

1. 拉取镜像

使用 ctr 命令拉取镜像:

sudo ctr image pull docker.io/library/nginx:latest

拉取镜像后,可以通过以下命令查看本地镜像:

sudo ctr images ls

2. 导出镜像

将镜像导出为 tar 文件:

sudo ctr images export nginx.tar docker.io/library/nginx:latest

3. 导入镜像

从 tar 文件导入镜像:

sudo ctr images import nginx.tar

4. 删除镜像

删除本地镜像:

sudo ctr images rm docker.io/library/nginx:latest

容器管理

1. 创建容器

使用 ctr 命令创建容器:

sudo ctr run -d --rm --net-host docker.io/library/nginx:latest my-nginx

在以上命令中:

  • -d 表示后台运行容器。
  • --rm 表示容器退出时自动删除。
  • --net-host 表示使用主机网络。
  • my-nginx 是容器的名字。

2. 列出容器

查看当前运行的容器:

sudo ctr tasks ls

3. 查看容器日志

查看容器的日志输出:

sudo ctr logs my-nginx

4. 进入容器

使用 ctr 命令进入容器:

sudo ctr tasks exec -t --exec-id myexec my-nginx /bin/sh

5. 停止容器

停止运行中的容器:

sudo ctr tasks kill -s SIGTERM my-nginx

6. 删除容器

删除容器:

sudo ctr containers rm my-nginx

实践操作案例

案例:部署 Nginx Web 服务器

  1. 拉取 Nginx 镜像:
sudo ctr image pull docker.io/library/nginx:latest
  1. 创建并运行 Nginx 容器:
sudo ctr run -d --rm --net-host docker.io/library/nginx:latest my-nginx
  1. 验证 Nginx 服务:

在浏览器中访问 http://localhost,应能看到 Nginx 欢迎页面。

  1. 查看 Nginx 容器日志:
sudo ctr logs my-nginx
  1. 进入 Nginx 容器:
sudo ctr tasks exec -t --exec-id nginxexec my-nginx /bin/sh

在容器内,您可以进行常规的运维操作,例如修改配置文件、查看运行状态等。

  1. 停止并删除 Nginx 容器:
sudo ctr tasks kill -s SIGTERM my-nginx
sudo ctr containers rm my-nginx

在容器和镜像管理的日常运维操作中,除了 ctr 命令,Containerd 生态中还有许多其他的客户端工具可以帮助您更高效地进行操作。这些工具为不同的操作需求提供了更便捷的接口和功能。以下是一些常用的 Containerd 客户端操作工具及其命令:

1. Nerdctl

nerdctl 是一个与 Docker CLI 兼容的命令行工具,专为 Containerd 设计,提供了类似 Docker 的用户体验。

安装 Nerdctl

wget https://github.com/containerd/nerdctl/releases/download/v0.11.1/nerdctl-0.11.1-linux-amd64.tar.gz
sudo tar -C /usr/local/bin -xzf nerdctl-0.11.1-linux-amd64.tar.gz

常用命令

拉取镜像

nerdctl pull nginx:latest

列出镜像

nerdctl images

运行容器

nerdctl run -d --name my-nginx -p 80:80 nginx:latest

查看容器

nerdctl ps

停止容器

nerdctl stop my-nginx

删除容器

nerdctl rm my-nginx

2. CRI工具(crictl)

crictl 是一个用于与 CRI(Container Runtime Interface) 兼容的容器运行时进行交互的命令行工具。它主要用于 Kubernetes 环境下调试和管理容器。

安装 crictl

VERSION="v1.21.0"
wget https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-$VERSION-linux-amd64.tar.gz
sudo tar -C /usr/local/bin -xzf crictl-$VERSION-linux-amd64.tar.gz

配置 crictl

创建配置文件 /etc/crictl.yaml:

runtime-endpoint: unix:///run/containerd/containerd.sock

常用命令

查看容器

sudo crictl ps

查看所有容器

sudo crictl ps -a

运行容器

sudo crictl runp pod-config.yaml
sudo crictl create <pod-id> container-config.yaml pod-config.yaml
sudo crictl start <container-id>

停止容器

sudo crictl stop <container-id>

删除容器

sudo crictl rm <container-id>

查看镜像

sudo crictl images

拉取镜像

sudo crictl pull nginx:latest

3. K9s

K9s 是一个用于管理 Kubernetes 集群的终端 UI 工具,它可以让您更加直观地查看和操作 Kubernetes 资源,包括 Pod、容器和镜像等。

安装 K9s

wget https://github.com/derailed/k9s/releases/download/v0.24.10/k9s_Linux_x86_64.tar.gz
sudo tar -C /usr/local/bin -xzf k9s_Linux_x86_64.tar.gz

使用 K9s

k9s

启动 k9s 后,您可以通过键盘快捷键导航和操作 Kubernetes 资源,例如查看 Pod、容器日志、进入容器终端等。

4. Podman

Podman 是一个无守护进程的容器引擎,旨在与 Docker 兼容。它可以作为 Containerd 的一个补充工具,提供类似 Docker 的命令行接口。

安装 Podman

sudo apt-get -y install podman

常用命令

拉取镜像

podman pull nginx:latest

列出镜像

podman images

运行容器

podman run -d --name my-nginx -p 80:80 nginx:latest

查看容器

podman ps

停止容器

podman stop my-nginx

删除容器

podman rm my-nginx

结论

通过本文的介绍,您了解了多种 Containerd 生态中的客户端工具及其命令,包括 nerdctl、crictl、K9s 和 Podman。这些工具各有其特点和优势,适用于不同的运维场景。灵活运用这些工具,可以显著提升容器管理的效率和便捷性。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接