Em meus kubernetes (v1.28.7), o docker usa containerd como mecanismo de gerenciamento de contêiner subjacente.
(Acho que posso chamá-lo de Container Runtime Interface - CRI?).
É assim que presumo (olhe a última linha e role totalmente para a direita):
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.
Pergunta: Se containerd é meu CRI, por que a única maneira de, por exemplo. listar imagens ou mostrar contêineres em execução é "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
Por que docker OR ctr não mostra imagens:
sudo ctr images ls
REF TYPE DIGEST SIZE PLATFORMS LABELS
sudo docker images ls
REPOSITORY TAG IMAGE ID CREATED SIZE
Containerd permite que os clientes definam um “namespace” para gerenciar diferentes conjuntos de recursos. Por exemplo, em meu sistema local, executando o Docker 26.0.0, o Docker usa containerd como tempo de execução do contêiner.
Existem alguns contêineres Docker em execução:
Não vejo nada se eu executar
ctr container ls
:Mas se eu usar o
moby
namespace, vejo os dois contêineres do Docker:Da mesma forma, em um sistema executando Kubernetes, running
ctr container ls
não mostra contêineres no namespace padrão, mas se usarmos ok8s.io
namespace, veremos os contêineres gerenciados pelo Kubernetes:O suporte ao namespace no containerd é descrito neste artigo .