All Products
Search
Document Center

Container Service for Kubernetes:Perbandingan runtime kontainer Docker, containerd, dan sandboxed container

Last Updated:Mar 27, 2026

Container Service for Kubernetes (ACK) mendukung tiga runtime kontainer: containerd, Sandboxed-Container, dan Docker. Topik ini membandingkan jenis kluster yang didukung, batasan fitur, arsitektur penerapan, dan perintah CLI untuk membantu Anda memilih runtime yang tepat bagi beban kerja Anda.

Penting

Runtime Docker telah dihentikan. Jika kluster Anda menjalankan Docker, lakukan migrasi ke containerd. Untuk petunjuknya, lihat Migrasi dari Docker ke containerd.

Cara runtime kontainer berintegrasi dalam node Kubernetes

Runtime kontainer mengelola eksekusi dan siklus hidup kontainer pada setiap node. kubelet berkomunikasi dengan runtime melalui Container Runtime Interface (CRI) untuk menjalankan, menghentikan, dan memantau kontainer. Pilihan runtime menentukan model isolasi, jenis node yang didukung, serta alat CLI yang digunakan untuk mengelola kontainer.

ACK mendukung runtime berikut:

  • containerd — Runtime yang direkomendasikan untuk sebagian besar beban kerja. Ringan dan langsung kompatibel dengan CRI tanpa lapisan daemon perantara.

  • Sandboxed-Container — Menggunakan VM ringan (runV) untuk menjalankan setiap Pod dalam kernel yang terisolasi.

  • Docker (tidak lagi dikembangkan) — Telah ditinggalkan dan tidak lagi menerima pemeliharaan. Lakukan migrasi ke containerd.

Perbandingan berdasarkan implementasi dan batasan

Fitur

containerd

Sandboxed-Container

Docker (maintenance dihentikan)

Jenis kluster

  • Kluster ACK yang dikelola

  • Cluster khusus ACK

  • Kluster ACK Edge

  • Kluster ACK yang dikelola

  • Cluster khusus ACK

Semua jenis kluster ACK

Versi Kubernetes

Versi 1.20 atau lebih baru

Kubernetes 1.16 atau lebih baru

Kubernetes 1.22 dan sebelumnya

Jenis node

  • ECS

  • Node yang dikelola sendiri (kluster ACK Edge)

Hanya keluarga ECS Bare Metal Instance yang didukung

ECS

Sistem operasi node

Container Service for Kubernetes menyediakan gambar publik untuk sistem operasi seperti versi Alibaba Cloud Linux 3 yang dioptimalkan untuk kontainer, ContainerOS, Alibaba Cloud Linux 3, Ubuntu, dan Windows. Untuk informasi selengkapnya, lihat Sistem operasi.

  • Alibaba Cloud Linux

  • CentOS

Engine kontainer

containerd

containerd

Docker

Pemantauan

Didukung

Didukung

Didukung

Pengumpulan log kontainer

Didukung

Injeksi manual (sidecar). Lihat Gunakan CRD untuk mengumpulkan log teks kontainer dalam mode sidecar.

Didukung

Pengumpulan stdout kontainer

Didukung

Didukung

Didukung

RuntimeClass

Tidak didukung

Didukung (runV)

Tidak didukung

Penjadwalan Pod

Tidak perlu konfigurasi.

Anda harus menambahkan konfigurasi berdasarkan aturan berikut:

  • Untuk Kubernetes 1.14.x, tambahkan konfigurasi berikut ke parameter nodeSelector:

    alibabacloud.com/sandboxed-container: Sandboxed-Container.runv
  • Untuk Kubernetes 1.16.x dan versi lebih baru, tidak diperlukan konfigurasi.

Tidak perlu konfigurasi.

HostNetwork

Didukung

Tidak didukung

Didukung

Disk data node

Opsional

Wajib. Disk data harus berukuran minimal 200 GiB.

Opsional

Plugin jaringan

  • Flannel

  • Terway (tidak termasuk kluster ACK Edge)

  • Flannel

  • Saat menggunakan Terway, mode Elastic Network Interface (ENI) eksklusif dan fitur DataPath v2 tidak didukung.

  • Flannel

  • Terway

Mode kube-proxy

  • iptables

  • IPVS

  • iptables

  • IPVS

  • iptables

  • IPVS

Plugin volume

Plugin CSI (tidak termasuk kluster ACK Edge)

Plugin CSI

Plugin CSI

Sistem file root kontainer

OverlayFS

OverlayFS dengan konfigurasi kuota disk

OverlayFS

Catatan

Anda tidak dapat menerapkan Docker dan Sandboxed-Container pada node yang sama. Untuk menjalankan kedua jenis runtime dalam satu kluster, buat kelompok node terpisah—satu untuk node runtime Docker dan satu lagi untuk node runtime Sandboxed-Container.

Catatan

Sandboxed-Container diimplementasikan di atas containerd. Saat Anda memeriksa node Sandboxed-Container dengan kubectl get node atau melihat daftar node di konsol ACK, runtime akan ditampilkan sebagai containerd.

Perbandingan berdasarkan arsitektur penerapan

Arsitektur penerapan menunjukkan rantai pemanggilan komponen dari kubelet hingga ke kontainer. Semakin sedikit lapisan, semakin rendah overhead dan kompleksitas operasionalnya.

Runtime

Arsitektur penerapan

Docker

kubelet
└── dockerd
    └── containerd
        └── containerd-shim
            └── runC containers

containerd

kubelet
└── containerd
    └── containerd-shim
        └── runC containers

Sandboxed-Container v2

kubelet
├── (CRI) containerd
│   ├── containerd-shim
│   │   └── runC containers
│   └── containerd-shim-runv2
│       └── runV sandboxed containers

containerd menghilangkan lapisan dockerd yang dibutuhkan oleh Docker, sehingga kubelet dapat mengakses runtime secara langsung melalui CRI. Sandboxed-Container v2 memperluas containerd dengan shim tambahan (containerd-shim-runv2) yang menjalankan Pod di dalam VM ringan menggunakan runV, memungkinkan isolasi tingkat kernel bersama kontainer runC standar pada node yang sama.

Perintah CLI untuk containerd dan Docker

containerd dan Docker menggunakan alat CLI berbeda untuk mengelola image dan kontainer. crictl adalah alat yang direkomendasikan untuk containerd karena beroperasi di tingkat CRI dan konsisten di seluruh lingkungan Kubernetes. ctr adalah CLI tingkat rendah containerd dan tersedia sebagai alternatif.

Operasi

crictl (direkomendasikan untuk containerd)

ctr (CLI tingkat rendah containerd)

docker

Kueri kontainer

crictl ps

ctr -n k8s.io c ls

docker ps

Kueri detail kontainer

crictl inspect <container>

ctr -n k8s.io c info <container>

docker inspect <container>

Kueri log kontainer

crictl logs <container>

N/A

docker logs <container>

Jalankan perintah di dalam kontainer

crictl exec <container>

N/A

docker exec <container>

Sambungkan stdin, stdout, dan stderr lokal ke kontainer

crictl attach <container>

N/A

docker attach <container>

Kueri statistik penggunaan resource

crictl stats <container>

N/A

docker stats <container>

Buat kontainer

crictl create <container>

ctr -n k8s.io c create <container>

docker create <container>

Jalankan kontainer

crictl start <container>

ctr -n k8s.io run <container>

docker start <container>

Hentikan kontainer

crictl stop <container>

ctr -n k8s.io task pause <container>

docker stop <container>

Hapus kontainer

crictl rm <container>

ctr -n k8s.io c del <container>

docker rm <container>

Kueri Gambar

crictl images

ctr -n k8s.io i ls <image>

docker images

Kueri detail image

crictl inspecti <image>

N/A

docker inspect <image>

Tarik citra

crictl pull <image>

ctr -n k8s.io i pull <image>

docker pull <image>

Dorong image

N/A

ctr -n k8s.io i push <image>

docker push <image>

Hapus image

crictl rmi <image>

ctr -n k8s.io i rm <image>

docker rmi <image>

Kueri Pod

crictl pods

N/A

N/A

Kueri detail Pod

crictl inspectp <pod name>

N/A

N/A

Jalankan Pod

crictl runp <pod name>

N/A

N/A

Hentikan Pod

crictl stopp <pod name>

N/A

N/A

Langkah selanjutnya

Referensi