Peta dunia

 

EN: Read in English

Dunia D3: Loker & Talian Telefon

Bind mount dan tmpfs

Anda akan belajar: kongsi folder laptop dengan container, dan simpan data dalam memori sahaja.

Teks BM belum disemak oleh penutur asli.

Disemak dengan Docker Engine 29 pada 31 Okt 2026

Masalahnya

Halaman tulis Kedai Kancil. Fail di laptop kini tulis open today. curl masih tunjuk halaman lama. Transkrip Docker: $ curl -s localhost:8080 <h1>Kedai Kancil</h1> $ echo "<h1>Kedai Kancil: open today</h1>" > site/index.html $ cat site/index.html <h1>Kedai Kancil: open today</h1> $ curl -s localhost:8080 <h1>Kedai Kancil</h1>

Laptop anda~/shop

  • Port laptop 8080 → site port 80

Bekas (container)

  • siteberjalan
    dari shop-site:1.0 8080→80

Pek beku (image)

  • nginx:1.30-alpine8 layer · 93.5MB
  • shop-site:1.09 layer · 92.6MB · sedang diguna

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

Anda dah baiki halaman kedai di laptop. Bekas masih tunjuk halaman lama. Ia dah dibakar dalam image. Nak bina semula untuk setiap salah taip?

Tengok

bind mount: Rak anda sendiri: folder di laptop yang dibuka dalam container. Suntingan terus nampak. (rak sendiri) sorong rak anda masuk ke bekas. Bekas nampak folder laptop itu sendiri, bukan salinan. Tekan kepingan ikut urutan.

Ketik kepingan ikut turutan yang betul.

…

Cuba

Jalankan site dengan rak ./site anda. Kemudian ubah index.html dan curl sekali lagi.

Laptop anda~/shop

  • Tiada tingkap terbuka

Bekas (container)

  • Belum ada container

Pek beku (image)

  • alpine:3.221 layer · 12.9MB
  • nginx:1.30-alpine8 layer · 93.5MB

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

Semak

site berjalan dengan :ro. Sesuatu dalam bekas cuba simpan fail dalam folder itu. Apa jadi?

Pilih satu jawapan.

Tengok

menu.txt ditulis ke /tmp/cache dan dibaca semula. Selepas docker restart app, ls kata No such file or directory. Transkrip Docker: $ docker run -d --name app --tmpfs /tmp/cache alpine:3.22 sleep 3600 e19b0f28dc533714dafc8b88863d5ae3b9a6a98cf926514051f4d38a5d83fecf $ docker exec app sh -c "echo hot > /tmp/cache/menu.txt" $ docker exec app cat /tmp/cache/menu.txt hot $ docker restart app app $ docker exec app ls /tmp/cache/menu.txt ls: /tmp/cache/menu.txt: No such file or directory

Laptop anda~

  • Tiada tingkap terbuka

Bekas (container)

  • Belum ada container

Pek beku (image)

  • alpine:3.221 layer · 12.9MB
  • nginx:1.30-alpine8 layer · 93.5MB
  • postgres:18-alpine9 layer · 433MB

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

tmpfs: Nota di papan putih: data dalam memori sahaja. Setiap kali berhenti, ia dipadam. ialah nota di papan putih: dalam memori sahaja. Ia laju dan tak pernah sentuh cakera. Setiap kali berhenti, ia dipadam.

Teka

Empat tempat untuk simpan fail. Teka dulu, kemudian jalankan.

Di mana setiap fail disimpan? Teka apa yang kekal, kemudian jalankan.

$ docker run -d --name kedai -v kedai-data:/data -v ./menu:/menu --tmpfs /tmp/cache nginx:1.30-alpine

Soalan 1 daripada 2

Bekas bekal: container kedai

  • Dalam bekas bekal (writable layer)/app/today.txt
  • Nota dalam memori (tmpfs)/tmp/cache/cache.bin

Di luar bekas bekal

  • Loker kedai-data (volume)/data/orders.db
  • Rak anda ./menu (bind mount)/menu/menu.md

Lepas ini, anda jalankan:

Mulakan semula container.

$ docker restart kedai

Pilih Kekal atau Hilang untuk setiap fail dahulu.

Semak

Pilih tempat yang betul untuk setiap kerja.

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

        Anda berjaya!

        Kini anda boleh guna bind mount dan tmpfs.

        Nak tahu lebih (pilihan)

        --mount type=bind,src=./site,dst=/data ialah bentuk panjang. Ia menolak folder yang tiada; -v diam-diam buat folder kosong. Di Docker Desktop, volume lebih laju daripada bind mount.

        Latihan sebenar (pilihan), dalam folder projek anda:

        Misi sebenar

        1. mkdir -p site && echo "<h1>Hello</h1>" > site/index.html
        2. docker run -d --name site -p 8080:80 -v ./site:/usr/share/nginx/html:ro nginx:1.30-alpine
        3. docker rm -f site

        0 daripada 4 langkah siap · Tanda anda disimpan.