Peta dunia

 

EN: Read in English

Dunia D6: Di Sebalik Tabir

OCI, containerd dan runc

Anda akan belajar: siapa sebenarnya yang mulakan container, peraturan bersama OCI, dan kenapa Kubernetes jalankan image anda tanpa Docker.

Teks BM belum disemak oleh penutur asli.

Disemak dengan Docker Engine 29 pada 31 Okt 2026

Masalahnya

Rakan sepasukan anda panik: “Kubernetes dah buang Docker! Semua image kita tak boleh pakai!” Betul ke?

Pilih satu jawapan.

Tengok

docker info senaraikan runtime (runc), runtime lalai runc, dan versi containerd, antara baris Cgroup Version dan Security Options. Transkrip Docker: $ docker info Client: Docker Engine - Community Version: 29.9.2 Context: default Debug Mode: false Plugins: buildx: Docker Buildx (Docker Inc.) Version: v0.38.1 Path: /usr/libexec/docker/cli-plugins/docker-buildx compose: Docker Compose (Docker Inc.) Version: v5.6.1 Path: /usr/libexec/docker/cli-plugins/docker-compose Server: Containers: 1 Running: 1 Paused: 0 Stopped: 0 Images: 1 Server Version: 29.9.2 Storage Driver: overlayfs driver-type: io.containerd.snapshotter.v1 Logging Driver: json-file Cgroup Driver: systemd Cgroup Version: 2 Runtimes: io.containerd.runc.v2 runc Default Runtime: runc Init Binary: docker-init containerd version: b7a25261e029d68978bbf290df0a62fc819b3c51 runc version: v1.5.2-0-g29dd3dc2 init version: de40ad0 Security Options: apparmor seccomp Profile: builtin cgroupns Kernel Version: 6.18.44-fc-v185 Operating System: Ubuntu 24.04.5 LTS OSType: linux Architecture: x86_64 CPUs: 4 Total Memory: 15.71GiB Name: laptop Docker Root Dir: /var/lib/docker

Laptop anda~

  • Port laptop 8080 → web port 80

Bekas (container)

  • webberjalan
    dari nginx:1.30-alpine 8080→80

Pek beku (image)

  • nginx:1.30-alpine8 layer · 93.5MB · sedang diguna

1 container (1 berjalan), 1 image, 0 loker.

Docker ialah satu pasukan. docker info sebut dua pembantu: containerd dan runc. runc: Runtime yang sediakan bilik: hidupkan namespace dan cgroups, mulakan aplikasi, kemudian pergi. bina bilik kecil (namespace, cgroups), mulakan aplikasi anda, kemudian pergi.

Cuba

containerd: Pengurus dapur: simpan image, mulakan dan jaga container. Docker dan Kubernetes sama-sama gunanya. ialah pengurus dapur. Ia simpan pek dan jaga bekas. Susun larian berganti ini, yang pertama di atas.

Langkah pertama di atas. Susun ikut turutan. Guna anak panah, atau seret.

  • containerd-shim tinggal untuk jaga bekas ini
  • Anda taip docker run
  • containerd, pengurus dapur, sediakan pek
  • runc hidupkan namespace dan cgroups, kemudian pergi
  • dockerd, kaunter depan, ambil pesanan
  • Aplikasi anda berjalan sebagai PID 1

Cuba

OCI: Open Container Initiative: peraturan bersama untuk image dan cara menjalankannya, supaya mana-mana runtime boleh guna. tulis peraturan bersama. Bayangkan saiz dulang standard: semua ketuhar muat. Susun setiap satu.

Seret kad ke dalam kotak. Atau ketik kad, kemudian ketik kotak.

      Teka

      Kubernetes 1.24 buang dockershim, penterjemahnya untuk Docker. Apa yang mulakan container pada setiap mesin sekarang?

      Pilih satu jawapan.

      Semak

      Tekan setiap tahun untuk lihat bagaimana kita sampai ke sini.

      Ketik setiap titik pada garis masa.

      Anda berjaya!

      Kini anda boleh terangkan siapa sebenarnya yang jalankan container, dan kenapa Kubernetes tak perlukan Docker.

      Nak tahu lebih (pilihan)

      Runtime lain ikut runtime spec yang sama, contohnya crun, gVisor dan Kata Containers. Shim membolehkan containerd dimulakan semula tanpa hentikan bekas anda. Kubernetes masih boleh guna Docker Engine melalui penyesuai cri-dockerd.

      Misi sebenar

      1. docker info
      2. docker run -d --name web nginx:1.30-alpine
      3. ps -ef | grep containerd-shim
      4. docker rm -f web

      0 daripada 4 langkah siap · Tanda anda disimpan.