EN: Read in English
Dunia D3: Loker & Talian Telefon
Loker: named volume
Anda akan belajar: simpan data dalam volume, iaitu loker di luar container.
Teks BM belum disemak oleh penutur asli.
Disemak dengan Docker Engine 29 pada 31 Okt 2026
Masalahnya
Laptop anda~
- Tiada tingkap terbuka
Bekas (container)
- dbberjalan
Pek beku (image)
- postgres:18-alpine9 layer · 433MB · sedang diguna
Loker (volume)
- 26e7b8e4309c… (tanpa nama)24 fail · diguna oleh db
1 container (1 berjalan), 1 image, 1 loker.
Kancil tukar bekas pangkalan data dengan yang baru. Kemudian: ERROR: relation "orders" does not exist. Maksudnya: pangkalan data baru tiada jadual orders.
Tengok
volume: Loker data supaya tak hilang bila container dibuang. (loker data) ialah loker di luar bekas. Docker simpan loker itu sampai anda padam. Tekan kepingan untuk bina pangkalan data yang ada loker.
Ketik kepingan ikut turutan yang betul.
Cuba
Mulakan db dengan loker pgdata. Kemudian buat jadual orders.
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.
Petunjuk
-v pgdata:/var/lib/postgresql buat loker itu kalau belum ada.Teka
Teka dulu, kemudian jalankan. Fail mana yang masih ada?
Di mana setiap fail disimpan? Teka apa yang kekal, kemudian jalankan.
$ docker run -d --name kedai -v kedai-data:/data nginx:1.30-alpineSoalan 1 daripada 2
Bekas bekal: container kedai
- Dalam bekas bekal (writable layer)
/app/today.txt
Di luar bekas bekal
- Loker kedai-data (volume)
/data/orders.db
Lepas ini, anda jalankan:
Buang container itu dan mulakan yang baharu.
$ docker rm -f kedai$ docker run -d --name kedai -v kedai-data:/data nginx:1.30-alpinePilih Kekal atau Hilang untuk setiap fail dahulu.
Cuba
Buang db. Mulakan semula dengan loker yang sama. Kemudian tengok pesanan.
Laptop anda~
- Tiada tingkap terbuka
Bekas (container)
- dbberjalan
Pek beku (image)
- alpine:3.221 layer · 12.9MB
- postgres:18-alpine9 layer · 433MB · sedang diguna
Loker (volume)
- pgdata24 fail · diguna oleh db
1 container (1 berjalan), 2 image, 1 loker.
Petunjuk
Guna-v pgdata:/var/lib/postgresql yang sama macam tadi.Semak
Arahan mana yang padam pesanan buat selamanya?
Pilih satu jawapan.
Anda berjaya!
Kini anda boleh simpan data dalam loker di luar container.
Nak tahu lebih (pilihan)
Ralat sebenar: volume is in use. Maksudnya: buang bekas itu dulu. Tanpa -v, Postgres dapat loker tanpa nama. Bekas baru dapat loker baru, jadi docker volume ls kumpul sisa.
Laptop anda~
- Tiada tingkap terbuka
Bekas (container)
- dbberjalan
Pek beku (image)
- alpine:3.221 layer · 12.9MB
- postgres:18-alpine9 layer · 433MB · sedang diguna
Loker (volume)
- pgdata24 fail · diguna oleh db
1 container (1 berjalan), 2 image, 1 loker.
Latihan sebenar (pilihan), dengan Docker anda sendiri:
Misi sebenar
docker volume create practice-datadocker run --rm -v practice-data:/data alpine:3.22 sh -c "echo hi > /data/note.txt"docker run --rm -v practice-data:/data alpine:3.22 cat /data/note.txtdocker volume rm practice-data
0 daripada 4 langkah siap · Tanda anda disimpan.
English
Kancil swaps the database box for a fresh one. Then: ERROR: relation "orders" does not exist. Plain words: the new database has no orders table.
A volume is a locker outside the lunchbox. Docker keeps it until you delete it. Tap the pieces to build a database with a locker.
Start db with the pgdata locker. Then make an orders table.
-v pgdata:/var/lib/postgresql makes the locker if it isn’t there yet.Guess first, then run it. Which file is still there?
Throw db away. Start it again with the same locker. Then look at the orders.
-v pgdata:/var/lib/postgresql as before.Which command deletes the orders for good?
You can now keep data in a locker that outlives the container.
Anda dah siapkan ini. Latihan lagi pun bagus!
Dokumentasi rasmi: Docker docs: Volumes · Docker docs: docker volume · Postgres image on Docker Hub
Anda dah belajar 25 minit. Rehat sekejap bantu otak anda.
Pecutan selesai! Fokus yang hebat. Regangkan badan seminit?