EN: Read in English
Dunia D6: Di Sebalik Tabir · Cabaran bos
X-ray
Anda akan belajar: tukar proses biasa jadi container, satu namespace dan satu had pada satu masa.
Teks BM belum disemak oleh penutur asli.
Disemak dengan Docker Engine 29 pada 31 Okt 2026
Masalahnya
Misi bos: X-ray. node server.js ialah proses biasa dalam laptop Aina. Anda akan jadikannya container, satu suis pada satu masa. Mula-mula: apa sebenarnya container?
Pilih satu jawapan.
Cuba
Bilik 1: sorok proses lain dalam laptop daripadanya.
Hidupkan suis yang sorok proses lain.
Apa yang ia nampak (namespace)
Proses yang ia nampak
1 /sbin/init412 sshd655 containerd701 dockerd1880 firefox4242 node server.js← proses ini
Fail yang ia nampak
/home/aina/kedai/server.js/home/aina/.ssh/id_ed25519/home/aina/Photos//var/lib/docker/
Petunjuk
Suis PID ada di sebelah senarai proses.Teka
PID dah hidup. Tapi ps di dalam masih senaraikan proses laptop. Kenapa?
Pilih satu jawapan.
Cuba
Bilik 2: hidupkan set penutup mata Docker sendiri, sampai sepanduk tulis container.
Hidupkan suis yang docker run guna, sehingga ia jadi container.
Hanya satu proses. Ia nampak seluruh laptop.
Apa yang ia nampak (namespace)
Proses yang ia nampak
1 node server.js← proses ini
Di dalam, ia PID 1. Tetapi ps baca /proc. Docker juga mount /proc yang baharu (suis Mount).
Fail yang ia nampak
/home/aina/kedai/server.js/home/aina/.ssh/id_ed25519/home/aina/Photos//var/lib/docker/
Network
lo 127.0.0.1wlan0 192.168.1.20docker0 172.17.0.1
Hostname
aina-laptopMemori kongsi
- memori kongsi dari firefox
- memori kongsi dari pulseaudio
Pengguna
Di dalam:
uid=0(root)Di laptop:
uid=0(root di laptop juga!)Docker guna suis ini hanya dalam mod rootless, atau dengan userns-remap.
Petunjuk
Docker hidupkan lima: PID, Mount, Network, UTS dan IPC. User kekal mati.Cuba
Bilik 3: sekarang yang sebenar. web jalankan nginx. Lihat dari dalam dengan docker exec web ps, kemudian dari laptop dengan docker top web.
Laptop anda~
- Port laptop 8080 → web port 80
Bekas (container)
- webberjalan
Pek beku (image)
- nginx:1.30-alpine8 layer · 93.5MB · sedang diguna
1 container (1 berjalan), 1 image, 0 loker.
Petunjuk
Dalam dulu:docker exec web ps. Kemudian pandangan laptop: docker top web.Cuba
Bilik 4: tambah had catuan, dan penutup mata terakhir. Hidupkan semua suis.
Hidupkan semua suis. Lihat apa yang proses itu boleh nampak dan guna.
Kini sebuah container: suis lalai Docker sudah hidup.
Apa yang ia nampak (namespace)
Proses yang ia nampak
1 node server.js← proses ini
Fail yang ia nampak
/app/server.js/usr/local/bin/node/etc/alpine-release
Docker juga tukar folder root kepada fail image.
Network
lo 127.0.0.1eth0 172.17.0.2
Docker pasang kabel maya, namanya eth0.
Hostname
3f9c2a7b1d04Memori kongsi
Tiada yang dikongsi. Memori aplikasi lain tersembunyi.
Pengguna
Di dalam:
uid=0(root)Di laptop:
uid=0(root di laptop juga!)Docker guna suis ini hanya dalam mod rootless, atau dengan userns-remap.
Apa yang ia boleh guna (cgroup)
Had
- Memori
- Tiada had: semua 16 GB
- CPU
- Tiada had: semua 8 CPU
- Proses
- Tiada had
Petunjuk
Masih mati: User, Had memori, Had CPU dan Had proses.Semak
Bilik terakhir: apa jadi bila anda taip docker run? Susun, yang pertama di atas.
Langkah pertama di atas. Susun ikut turutan. Guna anak panah, atau seret.
- dockerd hantar pesanan kepada containerd
- Anda taip docker run
- containerd susun lapisan image dengan plastik atas yang baharu
- runc hidupkan namespace dan cgroups
- Aplikasi anda bermula sebagai PID 1, dan runc pergi
Anda berjaya!
Kini anda boleh bina container dalam kepala, suis demi suis.
Nak tahu lebih (pilihan)
Latihan sebenar (pilihan, Linux): hidupkan suis sebenar dengan unshare. Namespace rangkaian baharu cuma ada lo, dan ia mula dalam keadaan mati. Laptop anda tak berubah.
Misi sebenar
sudo unshare --pid --fork --mount-proc --uts --net shpsip linkexit
0 daripada 4 langkah siap · Tanda anda disimpan.
English
Boss mission: the X-ray. node server.js is a plain process on Aina’s laptop. You will make it a container, one switch at a time. First: what is a container, really?
Room 1: hide the laptop’s other processes from it.
PID is on. Yet ps inside would still list the laptop’s processes. Why?
Room 2: turn on Docker’s own set of blinkers, until the banner says container.
Room 3: now a real one. web runs nginx. See it from inside with docker exec web ps, then from the laptop with docker top web.
docker exec web ps. Then the laptop’s view: docker top web.Room 4: add portion limits, and the last blinker. Turn on every switch.
Last room: what happens when you type docker run? Put it in order, first at the top.
You can now build a container in your head, switch by switch.
Anda dah siapkan ini. Latihan lagi pun bagus!
Dokumentasi rasmi: namespaces(7) · cgroups(7) · docker container top
Anda dah belajar 25 minit. Rehat sekejap bantu otak anda.
Pecutan selesai! Fokus yang hebat. Regangkan badan seminit?