在我的kubernetes(v1.28.7)中,docker使用containerd作为底层容器管理引擎。
(我想我可以称之为容器运行时接口 - CRI?)。
这就是我的假设(查看最后一行并一直滚动到右侧):
lab@worker01:~$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2024-03-27 14:22:36 UTC; 1h 11min ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 946 (dockerd)
Tasks: 7
Memory: 87.3M
CPU: 1.080s
CGroup: /system.slice/docker.service
└─946 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd <--- HERE!!! containerd instead of docker.
问题: 如果 containerd 是我的 CRI,为什么是唯一的方法,例如。列出图像或显示正在运行的容器是“crictl”?
sudo crictl image ls
IMAGE TAG IMAGE ID SIZE
docker.io/calico/cni v3.26.0 5d6f5c26c6554 93.3MB
docker.io/calico/node v3.26.0 44f52c09decec 87.6MB
docker.io/library/busybox latest ba5dc23f65d4c 2.16MB
docker.io/library/nginx latest 92b11f67642b6 70.5MB
docker.io/library/redis latest 170a1e90f8436 51.4MB
k8s.gcr.io/metrics-server/metrics-server v0.6.2 25561daa66605 28.1MB
registry.k8s.io/coredns/coredns v1.10.1 ead0a4a53df89 16.2MB
registry.k8s.io/kube-proxy v1.28.7 123aa721f941b 28.1MB
registry.k8s.io/pause 3.8 4873874c08efc 311kB
registry.k8s.io/pause 3.9 e6f1816883972 322kB
为什么docker OR ctr显示没有图像:
sudo ctr images ls
REF TYPE DIGEST SIZE PLATFORMS LABELS
sudo docker images ls
REPOSITORY TAG IMAGE ID CREATED SIZE
Containerd 允许客户端设置“命名空间”以管理不同的资源集。例如,在我的本地系统上,运行 Docker 26.0.0,Docker 使用 containerd 作为容器运行时。
有几个正在运行的 Docker 容器:
如果我运行,我什么也看不到
ctr container ls
:但如果我使用
moby
命名空间,我会看到两个 Docker 容器:同样,在运行 Kubernetes 的系统上,运行
ctr container ls
显示默认命名空间中没有容器,但如果我们使用k8s.io
命名空间,我们会看到 Kubernetes 管理的容器:本文介绍了 containerd 中的命名空间支持。