私の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
なぜドッカーまたはクリック率画像を表示しない:
sudo ctr images ls
REF TYPE DIGEST SIZE PLATFORMS LABELS
sudo docker images ls
REPOSITORY TAG IMAGE ID CREATED SIZE
答え1
Containerdを使用すると、クライアントは「名前空間」を設定してさまざまなリソースセットを管理できます。たとえば、Docker 26.0.0を実行しているローカルシステムでは、Dockerはコンテナランタイムとしてコンテナを使用します。
複数のDockerコンテナが実行されています。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7cfbf97a9275 alpinelinux/darkhttpd "darkhttpd /var/www/…" 7 seconds ago Up 6 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp boring_thompson
0e1ede44350e kindest/node:v1.29.2 "/usr/local/bin/entr…" 3 weeks ago Up 12 hours 127.0.0.1:39949->6443/tcp kind-control-plane
実行すると何も表示されませんctr container ls
。
# ctr container ls
CONTAINER IMAGE RUNTIME
ただし、名前空間を使用すると、moby
2つのDockerコンテナが表示されます。
# ctr --namespace moby container ls
CONTAINER IMAGE RUNTIME
0e1ede44350e15fa2305f4b2dbfa0a5023de645bb535b05cac232e91069c4e7e - io.containerd.runc.v2
7cfbf97a9275edb79228d241c221b665659e3688bbc96ac879bb950db481e912 - io.containerd.runc.v2
同様に、Kubernetesを実行しているシステムで実行すると、デフォルトの名前空間にコンテナがないとctr container ls
表示されますが、名前k8s.io
空間を使用するとKubernetes管理コンテナが表示されます。
# ctr --namespace k8s.io container ls
CONTAINER IMAGE RUNTIME
007dc9290e81c88cc85cf1b74b50c535420f1e1b4188eca4dfbd46e14881d2ab registry.k8s.io/kube-apiserver-amd64:v1.29.2 io.containerd.runc.v2
00c5f27f9125eb7132277585d450c904f4ff9542f5f70130855d268debad0624 registry.k8s.io/pause:3.7 io.containerd.runc.v2
0f2968f76498a18b098bc5a11f1b8071e261d74e0790bc7df6a56f0b37e9b293 registry.k8s.io/kube-proxy-amd64:v1.29.2 io.containerd.runc.v2
...
Containerd の名前空間サポートについては、以下で説明します。この記事。