내 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
두 개의 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의 네임스페이스 지원은 다음에 설명되어 있습니다.이 기사.