Containerd容器工具的部署和基本使用
1 | 作者:李晓辉 |
在容器化技术的世界里,Docker曾一度是炙手可热的选择,其简单易用的命令行工具和强大的生态系统使其成为开发和运维的常用工具。然而,随着容器技术的发展,行业需求变得更加复杂和多样化,出现了对更高效、灵活和低层次的容器运行时的需求。这时,Containerd作为一种新选择,逐渐走入了人们的视野。
Containerd是一个高性能的容器运行时,它最初是Docker引擎的一部分,但后来被独立出来,成为一个CNCF(云原生计算基金会)项目。相比于Docker,Containerd提供了更简洁、更直接的容器管理接口,其轻量级设计和优秀的性能表现,使其成为 Kubernetes 等现代容器编排系统的理想选择。
而且,在现在Kubernetes不再直接维护docker的shim,使得Kubernetes和Docker的对接变的麻烦且低性能,现在掌握Containerd的使用变的尤为必要。
在这篇博客中,我们将深入探讨如何部署Containerd,并介绍其一些基本的使用方法,以帮助你快速上手并充分利用其优势。
Containerd 部署
Containerd的下载和安装
这里采用了2.0.1版本
1 | wget https://github.com/containerd/nerdctl/releases/download/v2.0.1/nerdctl-full-2.0.1-linux-amd64.tar.gz |
生成配置文件
- 手工修改sanbox镜像到国内,不然它默认连接海外,而我们国内的网络连不上,会导致异常
- 如果你有现成的容器镜像加速器,可以配置一下registry部分,如果你没有,可以从这里购买容器镜像加速器:
https://registry.credclouds.com
1 | mkdir /etc/containerd |
以上需要手工修改config.toml文件,容易写错,可以考虑用下面的方式自动完成修改
1 | mkdir /etc/containerd |
使用镜像加速器
如果你没有容器镜像加速器,就忽略这个小节,也可以打开这个页面购买一个: https://registry.credclouds.com
注意将你的加速器地址替换掉下面的xxx
1 | mkdir /etc/containerd/certs.d/_default/ -p |
启动Containerd服务
1 | systemctl daemon-reload |
添加nerdctl命令自动补齐功能
1 | nerdctl completion bash > /etc/bash_completion.d/nerdctl |
Containerd 基本使用
运行容器
如果你没有配置以上的容器镜像加速器,这里将不会运行成功,因为国内的网络连不上dockerhub
1 | nerdctl run -d -p 8000:80 --name container1 nginx |
输出
1 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
-d 是指后台运行
-p 是端口映射,此处是将宿主机的8000端口和容器内的80端口映射到一起
–name 是指容器的名字
nginx 是指本次使用的镜像名字
进入容器
1 | nerdctl exec -it container1 /bin/bash |
exec -it 是指通过交互式进入terminal
访问容器内容
1 | curl http://127.0.0.1:8000 |
经过测试发现containerd工作正常