Peta dunia

 

EN: Read in English

Dunia D6: Di Sebalik Tabir

Kenapa Mac dan Windows perlu VM Linux

Anda akan belajar: kenapa Docker Desktop jalankan VM Linux yang kecil, dan apa kesannya untuk anda.

Teks BM belum disemak oleh penutur asli.

Disemak dengan Docker Engine 29 pada 31 Okt 2026

Masalahnya

Aina jalankan nginx dalam Docker Desktop pada Mac. Dia taip ps aux pada Mac itu. nginx tiada dalam senarai! Kenapa?

Pilih satu jawapan.

Tengok

zsh
docker version --format '{{.Client.Os}} / {{.Server.Os}}'
darwin / linux
Pada Mac dengan Docker Desktop: arahan docker ialah program macOS (darwin), dan enjin yang ia hubungi berjalan atas Linux.

Container pinjam kernel Linux, dan macOS ada kernel lain. Jadi Docker Desktop mulakan VM Linux (Docker Desktop) (Linux VM (Docker Desktop)): Komputer Linux kecil yang Docker Desktop jalankan pada Mac atau PC, kerana container perlukan kernel Linux. (mesin maya Linux) yang kecil. Enjin tinggal di situ.

Cuba

Di mana proses container sebenarnya berjalan? Susun setiap susunan.

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

      Teka

      Mac anda ada 16 GB. VM Docker Desktop ditetapkan 4 GB. Satu container mahu 6 GB. Apa jadi?

      Pilih satu jawapan.

      Semak

      docker version pada laptop latihan: baris OS/Arch Client dan Server kedua-duanya tulis linux/amd64, dan server senaraikan containerd dan runc. Transkrip Docker: $ docker version Client: Docker Engine - Community Version: 29.9.2 API version: 1.56 Go version: go1.26.10 Git commit: a82e528 Built: Tue Oct 20 18:44:40 2026 OS/Arch: linux/amd64 Context: default Server: Docker Engine - Community Engine: Version: 29.9.2 API version: 1.56 (minimum version 1.40) Go version: go1.26.10 Git commit: 0367cbe Built: Tue Oct 20 18:44:40 2026 OS/Arch: linux/amd64 Experimental: false containerd: Version: v2.4.2 GitCommit: b7a25261e029d68978bbf290df0a62fc819b3c51 runc: Version: 1.5.2 GitCommit: v1.5.2-0-g29dd3dc2 docker-init: Version: 0.19.0 GitCommit: de40ad0

      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.

      Laptop latihan ini guna Linux, jadi kedua-dua baris OS/Arch tulis linux. Pada Mac, baris Client tulis darwin. Baris Server tetap tulis linux.

      Semak

      Susun docker run -p 8080:80 pada Mac, yang pertama di atas.

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

      • nginx berjalan sebagai proses Linux dalam VM
      • Anda taip docker run dalam terminal Mac
      • Docker Desktop salurkan localhost:8080 dari Mac ke bekas
      • dockerd dalam VM Linux terima pesanan
      • Arahan docker hantar pesanan ke dalam VM
      • containerd dan runc mulakan bekas

      Anda berjaya!

      Kini anda boleh terangkan kenapa Docker Desktop perlukan VM Linux.

      Nak tahu lebih (pilihan)

      Di mana cerita ini tak tepat, untuk seluruh Bahagian 1: bekas makanan sebenar ada dinding. Container cuma ada penutup mata dan catuan atas satu dapur gas yang dikongsi. Pepijat kernel boleh sampai ke semua bekas serentak. Pek makanan disalin, tapi lapisan image dikongsi, tak pernah disalin.

      Latihan sebenar (pilihan): intai dapur yang tersorok.

      Misi sebenar

      1. docker version
      2. docker info

      0 daripada 2 langkah siap · Tanda anda disimpan.