Peta dunia

 

EN: Read in English

Dunia D6: Di Sebalik Tabir

Namespace: apa yang ia nampak

Anda akan belajar: cara namespace Linux beri satu proses senarai proses, rangkaian dan hostname sendiri.

Teks BM belum disemak oleh penutur asli.

Disemak dengan Docker Engine 29 pada 31 Okt 2026

Masalahnya

Proses biasa ini, node server.js, nampak semua program dalam laptop. Dalam container, ps tunjuk satu sahaja. Hidupkan dua suis ini dan tengok.

Hidupkan PID, kemudian Mount. Tengok senarai proses.

Apa yang ia nampak (namespace)

  • Proses yang ia nampak

    • 1 /sbin/init
    • 412 sshd
    • 655 containerd
    • 701 dockerd
    • 1880 firefox
    • 4242 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/

Tengok

hostname pada laptop cetak laptop. Di dalam web, hostname cetak id pendek container itu. Transkrip Docker: $ hostname laptop $ docker exec web hostname 4acac0af2c1c

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.

Dua nama berbeza! Setiap suis ialah satu namespace (Linux): Penutup mata untuk proses: ia nampak proses, rangkaian, fail atau hostname sendiri sahaja. Bukan namespace Kubernetes.. Namespace (ruang nama) ialah penutup mata. Ia sorok satu benda, contohnya hostname laptop.

Cuba

Cari penutup mata yang beri proses itu kad rangkaian sendiri.

Suis mana yang beri network sendiri?

Apa yang ia nampak (namespace)

  • Network

    • lo 127.0.0.1
    • wlan0 192.168.1.20
    • docker0 172.17.0.1
  • Hostname

    aina-laptop
  • Memori kongsi

    • memori kongsi dari firefox
    • memori kongsi dari pulseaudio

Teka

Dua container nginx sama-sama dengar port 80 di dalam. Adakah ia berlanggar?

Pilih satu jawapan.

Cuba

Buktikan. Mulakan nginx kedua bernama web2, tanpa -p.

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.

Semak

Namespace mana yang sorok setiap benda?

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

        Anda berjaya!

        Kini anda boleh terangkan cara namespace ubah apa yang container nampak.

        Nak tahu lebih (pilihan)

        Linux ada 8 jenis: cgroup, IPC, network, mount, PID, time, user dan UTS. Docker hidupkan PID, mount, network, UTS dan IPC (dan cgroup pada cgroup v2). Yang user kekal mati secara lalai (pelajaran 6). Namespace Kubernetes ialah idea lain: satu zon medan selera.

        Latihan sebenar (pilihan, Linux): buat namespace sendiri.

        Misi sebenar

        1. sudo unshare --uts --pid --fork --mount-proc sh
        2. hostname kancil
        3. ps
        4. exit

        0 daripada 4 langkah siap · Tanda anda disimpan.