Peta dunia

 

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

docker ps tunjuk web Up, dengan 80/tcp dan tiada port laptop. curl localhost:8080 gagal: Couldn't connect to server. Transkrip Docker: $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3bd7b3ef220a nginx:1.30-alpine "/docker-entrypoint.…" 3 seconds ago Up 3 seconds 80/tcp web $ curl localhost:8080 curl: (7) Failed to connect to localhost port 8080 after 0 ms: Couldn't connect to server

Laptop anda~

  • Tiada tingkap terbuka

Bekas (container)

  • webberjalan
    dari nginx:1.30-alpine

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-alpine

Tengok

web yang lama dibuang. web baru bermula dengan -p 8080:80. docker port web tunjuk 80/tcp -> 0.0.0.0:8080. curl dapat halaman Welcome to nginx! Transkrip Docker: $ docker rm -f web web $ docker run -d --name web -p 8080:80 nginx:1.30-alpine 11f3205b1373ecd5c6a55438fb1cb5fb2c7c3356dba3c8a091ba21e7bd8c86e4 $ docker port web 80/tcp -> 0.0.0.0:8080 $ curl -s localhost:8080 | grep title <title>Welcome to nginx!</title>

Laptop anda~

  • Tiada tingkap terbuka

Bekas (container)

  • webberjalan
    dari nginx:1.30-alpine

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

web sudah pegang port laptop 8080. docker run untuk api gagal: Bind for 0.0.0.0:8080 failed: port is already allocated. api tinggal Created. Transkrip Docker: $ docker run -d --name api -p 8080:80 nginx:1.30-alpine b14de4e0bea1426da714c529fab09a838d1915d89754b8a64597c4a6fb07dfa8 docker: Error response from daemon: failed to set up container networking: driver failed programming external connectivity on endpoint api (9c7e32522c4bd5d03e154ce32bed280368ce0eb0de550be443e03db638c7c328): Bind for 0.0.0.0:8080 failed: port is already allocated Run 'docker run --help' for more information

Laptop anda~

  • Port laptop 8080 → web port 80

Bekas (container)

  • webberjalan
    dari nginx:1.30-alpine 8080→80

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-alpine

Semak

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

  1. docker run -d --name web -p 127.0.0.1:8080:80 nginx:1.30-alpine
  2. docker port web
  3. docker rm -f web

0 daripada 4 langkah siap · Tanda anda disimpan.