EN: Read in English
Dunia D1: Container Pertama
Tingkap pesanan: port mapping
Anda akan belajar: buka pintu dari laptop anda ke dalam container dengan -p.
Teks BM belum disemak oleh penutur asli.
Disemak dengan Docker Engine 29 pada 31 Okt 2026
Masalahnya
Laptop anda~
- Tiada tingkap terbuka
Bekas (container)
- webberjalan
Pek beku (image)
- nginx:1.30-alpine8 layer · 93.5MB · sedang diguna
1 container (1 berjalan), 1 image, 0 loker.
web Up, tapi ralat sebenar kata Couldn't connect to server. Maksudnya: tiada siapa jawab di port 8080 laptop anda. Bekas itu bertutup.
Cuba
Buka tingkap pesanan: sambung port laptop 8080 ke port 80 web. Inilah port mapping: Tingkap pesanan dari komputer anda ke container..
Buka tingkap pesanan: port laptop 8080 ke web port 80.
Tekan port laptop, kemudian port container.
Laptop anda
web
$ docker run -d --name web nginx:1.30-alpineTengok
Laptop anda~
- Tiada tingkap terbuka
Bekas (container)
- webberjalan
Pek beku (image)
- nginx:1.30-alpine8 layer · 93.5MB · sedang diguna
1 container (1 berjalan), 1 image, 0 loker.
Tingkap dibuka semasa bekas dibuat, jadi web dibuat semula. Baca -p 8080:80 dari kiri: laptop dulu, bekas kemudian.
Cuba
Giliran anda. Jalankan web dengan tingkap di 8080. Kemudian curl localhost:8080.
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
0 container (0 berjalan), 2 image, 0 loker.
Teka
web pegang tingkap 8080. Bekas baru, api, juga minta port laptop 8080. Apa jadi?
Pilih satu jawapan.
Semak
Laptop anda~
- Port laptop 8080 → web port 80
Bekas (container)
- webberjalan
Pek beku (image)
- alpine:3.221 layer · 12.9MB
- nginx:1.30-alpine8 layer · 93.5MB · sedang diguna
1 container (1 berjalan), 2 image, 0 loker.
Ralat sebenar berakhir dengan port is already allocated. Maksudnya: bekas lain sudah guna port laptop 8080.
Cuba
Beri api tingkapnya sendiri. Mana-mana port laptop yang kosong boleh.
api pun perlukan tingkap. 8080 sudah diambil.
Tekan port laptop, kemudian port container.
Laptop anda
web
api
-p 8080:80laptop 8080 → web:80
$ docker run -d --name web -p 8080:80 nginx:1.30-alpine$ docker run -d --name api nginx:1.30-alpineSemak
docker run -d -p 3000:80 nginx:1.30-alpine. Alamat mana yang buka halaman itu?
Pilih satu jawapan.
Anda berjaya!
Kini anda boleh buka tingkap pesanan ke dalam container.
Nak tahu lebih (pilihan)
Tanpa alamat, -p buka tingkap pada setiap rangkaian laptop anda. Orang lain dalam Wi-Fi anda mungkin boleh capai! -p 127.0.0.1:8080:80 simpan untuk laptop anda sahaja. Lebih banyak helah tingkap dalam Dunia D3.
Latihan sebenar (pilihan):
Misi sebenar
docker run -d --name web -p 127.0.0.1:8080:80 nginx:1.30-alpinedocker port webdocker rm -f web
0 daripada 4 langkah siap · Tanda anda disimpan.
English
web is Up, but the real error says Couldn't connect to server. Plain words: nobody answers at port 8080 on your laptop. The box is sealed.
Cut an order hatch: plug laptop port 8080 into web’s port 80. This is port mapping.
A hatch is cut when a box is made. So web is made again. Read -p 8080:80 left to right: laptop first, box second.
Your turn. Run web with a hatch on 8080. Then curl localhost:8080.
web holds hatch 8080. A new box, api, also asks for laptop port 8080. What happens?
The real error ends with port is already allocated. Plain words: another box already uses laptop port 8080.
Give api its own hatch. Any free laptop port works.
docker run -d -p 3000:80 nginx:1.30-alpine. Which address opens the page?
You can now open an order hatch into a container.
Anda dah siapkan ini. Latihan lagi pun bagus!
Dokumentasi rasmi: Port publishing and mapping · Publishing and exposing ports · docker port
Anda dah belajar 25 minit. Rehat sekejap bantu otak anda.
Pecutan selesai! Fokus yang hebat. Regangkan badan seminit?