EN: Read in English
Dunia D3: Loker & Talian Telefon · Cabaran bos
Data yang kekal
Anda akan belajar: jalankan aplikasi dan Postgres yang datanya kekal selepas docker rm.
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.
Boss: Kedai Kancil buka esok! Ujian semalam hilangkan semua pesanan. Bina dengan betul: kedai dan Postgres, dengan pesanan yang kekal selepas docker rm.
Cuba
Bilik 1: buat loker pgdata dan talian telefon shopnet.
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
Satudocker volume create, satu docker network create.Semak
Bilik 2 mulakan Postgres 18. Di mana loker pgdata mesti dibuka?
Pilih satu jawapan.
Cuba
Bilik 2: mulakan db di shopnet, 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
Loker (volume)
- pgdata0 fail
Talian telefon (rangkaian)
- shopnet—
0 container (0 berjalan), 3 image, 1 loker.
Petunjuk
Anda perlukan--network shopnet, -e POSTGRES_PASSWORD=… dan -v pgdata:/var/lib/postgresql.Semak
Aplikasi kedai perlu cari db. Tetapan mana yang berfungsi?
Leret ke kanan untuk bagus, ke kiri untuk perlu baiki. Atau guna butang.
DB_HOST=dbCuba
Bilik 3: mulakan web, halaman kedai, di shopnet. Buka tingkap 8080 untuk pelanggan.
Laptop anda~
- Tiada tingkap terbuka
Bekas (container)
- dbberjalan
Pek beku (image)
- alpine:3.221 layer · 12.9MB
- nginx:1.30-alpine8 layer · 93.5MB
- postgres:18-alpine9 layer · 433MB · sedang diguna
Loker (volume)
- pgdata24 fail · diguna oleh db
Talian telefon (rangkaian)
- shopnetdb
1 container (1 berjalan), 3 image, 1 loker.
Petunjuk
web perlukan kedua-duanya:--network shopnet dan -p 8080:80.Teka
Sebelum bilik terakhir: semakan loker yang ringkas. 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 nginx:1.30-alpineBekas bekal: container kedai
- Dalam bekas bekal (writable layer)
/app/today.txt
Di luar bekas bekal
- Loker kedai-data (volume)
/data/orders.db - Rak anda ./menu (bind mount)
/menu/menu.md
Lepas ini, anda jalankan:
Buang container itu dan mulakan yang baharu.
$ docker rm -f kedai$ docker run -d --name kedai -v kedai-data:/data -v ./menu:/menu nginx:1.30-alpinePilih Kekal atau Hilang untuk setiap fail dahulu.
Cuba
Bilik terakhir: buang db dengan docker rm -f. Mulakan semula di talian dan loker yang sama. Kemudian tunjuk pesanan.
Laptop anda~
- Port laptop 8080 → web port 80
Bekas (container)
- dbberjalan
- webberjalan
Pek beku (image)
- alpine:3.221 layer · 12.9MB
- nginx:1.30-alpine8 layer · 93.5MB · sedang diguna
- postgres:18-alpine9 layer · 433MB · sedang diguna
Loker (volume)
- pgdata24 fail · diguna oleh db
Talian telefon (rangkaian)
- shopnetdb ↔ web
2 container (2 berjalan), 3 image, 1 loker.
Petunjuk
Guna baris run yang sama macam Bilik 2.Anda berjaya!
Kini anda boleh jalankan aplikasi dan pangkalan data yang datanya kekal.
English
Boss: Kedai Kancil opens tomorrow! Last night’s test lost every order. Build it right: a shop and Postgres, with orders that survive docker rm.
Room 1: make the pgdata locker and the shopnet phone line.
docker volume create, one docker network create.Room 2 starts Postgres 18. Where must the pgdata locker open?
Room 2: start db on shopnet, with the pgdata locker. Then make an orders table.
--network shopnet, -e POSTGRES_PASSWORD=… and -v pgdata:/var/lib/postgresql.The shop app needs to find db. Which setting works?
Room 3: start web, the shop page, on shopnet. Open hatch 8080 for customers.
--network shopnet and -p 8080:80.Before the last room: a quick locker check. Guess first, then run it.
Final room: throw db away with docker rm -f. Start it again on the same line and locker. Then show the orders.
You can now run an app and a database whose data survives.
Anda dah siapkan ini. Latihan lagi pun bagus!
Dokumentasi rasmi: Docker docs: Volumes · Docker docs: Networking overview · Postgres image on Docker Hub
Anda dah belajar 25 minit. Rehat sekejap bantu otak anda.
Pecutan selesai! Fokus yang hebat. Regangkan badan seminit?