K8s 弃用 Docker!一文介绍 containerd ctr、crictl 使用
转自:高效运维
如何在 ctr 中使用 containerd
使用 ctr 处理容器镜像
$ ctr images pull docker.io/library/nginx:1.21
$ ctr images pull docker.io/kennethreitz/httpbin:latest
$ ctr images pull docker.io/kennethreitz/httpbin:latest
$ ctr images pull quay.io/quay/redis:latest
$ ctr images ls
$ docker build -t my-app .
$ docker save -o my-app.tar my-app
$ ctr images import my-app.tar
$ mkdir /tmp/httpbin
$ ctr images mount docker.io/kennethreitz/httpbin:latest /tmp/httpbin
$ ls -l /tmp/httpbin/
total 80
drwxr-xr-x 2 root root 4096 Oct 18 2018 bin
drwxr-xr-x 2 root root 4096 Apr 24 2018 boot
drwxr-xr-x 4 root root 4096 Oct 18 2018 dev
drwxr-xr-x 1 root root 4096 Oct 24 2018 etc
drwxr-xr-x 2 root root 4096 Apr 24 2018 home
drwxr-xr-x 3 root root 4096 Oct 24 2018 httpbin
...
$ ctr images unmount /tmp/httpbin
$ ctr images remove docker.io/library/nginx:1.21
使用 ctr 处理容器
ctr run image-ref container-id
。例如:$ ctr run --rm -t docker.io/library/debian:latest cont1
--env,-t,--tty,-d,--detach,--rm
等,但没有端口指定或自动重启容器--restart=always
。$ ctr containers ls
ctr container create + ctr task start
:$ ctr container create -t docker.io/library/nginx:latest nginx_1
$ ctr container ls
CONTAINER IMAGE RUNTIME
nginx_1 docker.io/library/nginx:latest io.containerd.runc.v2
$ ctr task ls
TASK PID STATUS # Empty!
$ ctr task start -d nginx_1 # -d for --detach
$ ctr task list
TASK PID STATUS
nginx_1 10074 RUNNING
-容器是资源被隔离和执行受限制的进程。
$ ctr task attach nginx_1
2021/09/12 15:42:20 [notice] 1#1: using the "epoll" event method
2021/09/12 15:42:20 [notice] 1#1: nginx/1.21.3
2021/09/12 15:42:20 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6)
2021/09/12 15:42:20 [notice] 1#1: OS: Linux 4.19.0-17-amd64
2021/09/12 15:42:20 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1024:1024
2021/09/12 15:42:20 [notice] 1#1: start worker processes
2021/09/12 15:42:20 [notice] 1#1: start worker process 31
...
$ ctr task exec -t --exec-id bash_1 nginx_1 bash
# From inside the container:
$ root@host:/# curl 127.0.0.1:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
...
$ ctr task kill -9 nginx_1
$ ctr task rm -f nginx_1
$ ctr container rm nginx_1
如何在 nerdctl 中使用 containerd
nerdctl + containerd
可以无缝替换docker + dockerd
. 但是,这似乎不是该项目的目标:nerdctl 其目标是促进试验 Docker 中不存在的 containerd 的尖端功能。此类功能包括但不限于延迟拉取 (stargz) 和图像加密 (ocicrypt)。预计这些功能最终也将在 Docker 中可用,但是,这可能需要几个月甚至几年的时间,因为 Docker 目前被设计为仅使用容器子系统的一小部分。重构 Docker 以使用整个 containerd 是可能的,但并不简单。所以我们决定创建一个完全使用 containerd 的新 CLI,但我们不打算用 Docker 来完成。我们一直在为 Docker/Moby 以及 containerd 做出贡献,并将继续这样做。
镜像管理 nerdctl build 容器网络管理 Docker 与 nerdctl compose up
如何在 crictl 中使用 containerd
引入了 Kubernetes 容器运行时接口 (CRI)以使 Kubernetes 容器运行时充满魔法。Kubernetes 节点代理 kubelet 实现了 CRI 客户端 API,可以使用任何实现 CRI 服务器 API 的容器运行时来管理其节点上的容器和 pod。
attach: Attach to a running container
create: Create a new container
exec: Run a command in a running container
version: Display runtime version information
images, image, img: List images
inspect: Display the status of one or more containers
inspecti: Return the status of one or more images
imagefsinfo: Return image filesystem info
inspectp: Display the status of one or more pods
logs: Fetch the logs of a container
port-forward: Forward local port to a pod
ps: List containers
pull: Pull an image from a registry
run: Run a new container inside a sandbox
runp: Run a new pod
rm: Remove one or more containers
rmi: Remove one or more images
rmp: Remove one or more pods
pods: List pods
start: Start one or more created containers
info: Display information of the container runtime
stop: Stop one or more running containers
stopp: Stop one or more running pods
update: Update one or more running containers
config: Get and set crictl client configuration options
stats: List container(s) resource usage statistics
crictl + containerdbundle
可以了解 pod 是如何实现的,但是这个话题值得自己去探索。END
官方站点:www.linuxprobe.com
Linux命令大全:www.linuxcool.com
刘遄老师QQ:5604241
Linux技术交流群:3762708
(新群,火热加群中……)
想要学习Linux系统的读者可以点击"阅读原文"按钮来了解书籍《Linux就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!
微信扫码关注该文公众号作者
戳这里提交新闻线索和高质量文章给我们。
来源: qq
点击查看作者最近其他文章