Peta dunia

 

EN: Read in English

Dunia D4: Set Hidangan

Skala satu servis

Anda akan belajar: jalankan lebih banyak salinan satu service, dan bila ia tak boleh.

Teks BM belum disemak oleh penutur asli.

Disemak dengan Docker Engine 29 pada 31 Okt 2026

Masalahnya

Waktu makan tengah hari! Seorang tukang masak API tak menang tangan. Anda mahu tiga. Apa anda buat?

Pilih satu jawapan.

Tengok

Tiga bekas api, bernombor api-1 hingga api-3, dan satu bekas web. Transkrip Docker: $ docker compose up -d --scale api=3 [+] up 5/5 ✔ Network kedai-kancil_default Created 0.1s ✔ Container kedai-kancil-web-1 Started 0.3s ✔ Container kedai-kancil-api-1 Started 0.3s ✔ Container kedai-kancil-api-2 Started 0.3s ✔ Container kedai-kancil-api-3 Started 0.3s $ docker compose ps NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS kedai-kancil-api-1 kedai-kancil-api "docker-entrypoint.s…" api 3 seconds ago Up 3 seconds 3000/tcp kedai-kancil-api-2 kedai-kancil-api "docker-entrypoint.s…" api 3 seconds ago Up 3 seconds 3000/tcp kedai-kancil-api-3 kedai-kancil-api "docker-entrypoint.s…" api 3 seconds ago Up 3 seconds 3000/tcp kedai-kancil-web-1 kedai-kancil-web "/docker-entrypoint.…" web 3 seconds ago Up 3 seconds 0.0.0.0:8080->80/tcp

Laptop anda~/kedai-kancil

  • Tiada tingkap terbuka

Bekas (container)

  • Belum ada container

Pek beku (image)

  • kedai-kancil-api:latest6 layer · 244MB
  • kedai-kancil-web:latest9 layer · 92.6MB
  • nginx:1.30-alpine8 layer · 93.5MB
  • node:24-alpine4 layer · 244MB
  • postgres:18-alpine9 layer · 433MB
  • redis:8-alpine7 layer · 162MB

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

scale (skala) (scale): Jalankan lebih banyak salinan satu service: docker compose up -d --scale api=3. (skala) satu service bermaksud jalankan lebih banyak salinannya. --scale api=3 minta tiga. Compose beri nombor: api-1, api-2, api-3.

Cuba

Waktu sibuk dah tamat. Simpan dua tukang masak api sahaja.

Laptop anda~/kedai-kancil

  • Port laptop 8080 → kedai-kancil-web-1 port 80

Bekas (container)

  • kedai-kancil-api-1berjalan
    dari kedai-kancil-api kedai-kancil_default
  • kedai-kancil-api-2berjalan
    dari kedai-kancil-api kedai-kancil_default
  • kedai-kancil-api-3berjalan
    dari kedai-kancil-api kedai-kancil_default
  • kedai-kancil-web-1berjalan
    dari kedai-kancil-web 8080→80 kedai-kancil_default

Pek beku (image)

  • kedai-kancil-api:latest6 layer · 244MB · sedang diguna
  • kedai-kancil-web:latest9 layer · 92.6MB · sedang diguna
  • nginx:1.30-alpine8 layer · 93.5MB
  • node:24-alpine4 layer · 244MB
  • postgres:18-alpine9 layer · 433MB
  • redis:8-alpine7 layer · 162MB

Talian telefon (rangkaian)

  • kedai-kancil_defaultkedai-kancil-api-1 ↔ kedai-kancil-api-2 ↔ kedai-kancil-api-3 ↔ kedai-kancil-web-1

4 container (4 berjalan), 6 image, 0 loker.

Teka

Sekarang anda skala web jadi dua. Kedua-dua salinan mahu tingkap 8080 di laptop. Apa jadi?

Pilih satu jawapan.

Semak

web-2 dibuat, kemudian gagal: Bind for 0.0.0.0:8080 failed: port is already allocated. Transkrip Docker: $ docker compose up -d [+] up 3/3 ✔ Network kedai-kancil_default Created 0.1s ✔ Container kedai-kancil-web-1 Started 0.3s ✔ Container kedai-kancil-api-1 Started 0.3s $ docker compose up -d --scale web=2 [+] up 1/2 ✔ Container kedai-kancil-web-1 Running 0.0s ✘ Container kedai-kancil-web-2 Error 0.1s Error response from daemon: failed to set up container networking: driver failed programming external connectivity on endpoint kedai-kancil-web-2 (2655bb708b0080b740109467e2bba74d4c6f1f24f4f8140568f74733d145c28f): Bind for 0.0.0.0:8080 failed: port is already allocated

Laptop anda~/kedai-kancil

  • Tiada tingkap terbuka

Bekas (container)

  • Belum ada container

Pek beku (image)

  • kedai-kancil-api:latest6 layer · 244MB
  • kedai-kancil-web:latest9 layer · 92.6MB
  • nginx:1.30-alpine8 layer · 93.5MB
  • node:24-alpine4 layer · 244MB
  • postgres:18-alpine9 layer · 433MB
  • redis:8-alpine7 layer · 162MB

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

Kata sebenar: port is already allocated. Maksudnya: web-1 dah pegang tingkap 8080.

Semak

Boleh hidangan ini diskala di satu laptop? Kanan untuk ya, kiri untuk tidak.

Leret ke kanan untuk bagus, ke kiri untuk perlu baiki. Atau guna butang.

1 / 4

api tanpa ports

api tanpa ports

Anda berjaya!

Kini anda boleh jalankan lebih banyak salinan satu service.

Nak tahu lebih (pilihan)

deploy: replicas: 3 dalam fail buat perkara sama seperti pilihan itu. Panggil api pada talian telefon kini jumpa ketiga-tiga bekas. Docker tak betul-betul bahagikan kerja antara mereka. Proxy yang buat begitu, atau Kubernetes dalam Bahagian 3. Compose jalan di satu mesin sahaja.

Latihan sebenar (pilihan): dalam projek yang ada service api tanpa ports, jalankan docker compose up -d --scale api=3, kemudian docker compose ps.