Peta dunia

 

EN: Read in English

Dunia D1: Container Pertama · Cabaran bos

Syif malam

Anda akan belajar: cari dan baiki tiga container yang rosak dengan sendiri.

Teks BM belum disemak oleh penutur asli.

Disemak dengan Docker Engine 29 pada 31 Okt 2026

Masalahnya

docker ps -a senaraikan tiga bekas. db: Exited (1). timer: Exited (127). web: Up, dengan tingkap 0.0.0.0:8080->8080/tcp. Transkrip Docker: $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b27bdf2275f5 postgres:18-alpine "docker-entrypoint.s…" 6 seconds ago Exited (1) 6 seconds ago db 034b6a2a054e alpine:3.22 "sh -c 'echo Timer o…" 9 seconds ago Exited (127) 9 seconds ago timer 8d5f42c9113a nginx:1.30-alpine "/docker-entrypoint.…" 12 seconds ago Up 12 seconds 80/tcp, 0.0.0.0:8080->8080/tcp web

Laptop anda~

  • Port laptop 8080 → web port 8080

Bekas (container)

  • webberjalan
    dari nginx:1.30-alpine 8080→8080
  • timergagal (keluar 127)
    dari alpine:3.22
  • dbgagal (keluar 1)
    dari postgres:18-alpine tanpa nama → /var/lib/postgresql

Pek beku (image)

  • alpine:3.221 layer · 12.9MB · sedang diguna
  • nginx:1.30-alpine8 layer · 93.5MB · sedang diguna
  • postgres:18-alpine9 layer · 433MB · sedang diguna

Loker (volume)

  • 1067bd10d611… (tanpa nama)0 fail · diguna oleh db

3 container (1 berjalan), 3 image, 1 loker.

Boss: syif malam! Tukang masak siang tinggalkan tiga bekas rosak. Kedai buka pukul 7. Baiki web, timer dan db.

Cuba

Bekas 1: web Up, tapi curl localhost:8080 gagal. Semak tingkapnya, kemudian baiki.

Laptop anda~

  • Port laptop 8080 → web port 8080

Bekas (container)

  • webberjalan
    dari nginx:1.30-alpine 8080→8080
  • timergagal (keluar 127)
    dari alpine:3.22
  • dbgagal (keluar 1)
    dari postgres:18-alpine tanpa nama → /var/lib/postgresql

Pek beku (image)

  • alpine:3.221 layer · 12.9MB · sedang diguna
  • nginx:1.30-alpine8 layer · 93.5MB · sedang diguna
  • postgres:18-alpine9 layer · 433MB · sedang diguna

Loker (volume)

  • 1067bd10d611… (tanpa nama)0 fail · diguna oleh db

3 container (1 berjalan), 3 image, 1 loker.

Semak

curl kata Connection reset by peer. Kenapa -p 8080:8080 gagal?

Pilih satu jawapan.

Cuba

Bekas 2: timer terus berhenti dengan Exited (127). Cari sebabnya, kemudian buat ia berdetik selama sejam.

Laptop anda~

  • Port laptop 8080 → web port 80

Bekas (container)

  • webberjalan
    dari nginx:1.30-alpine 8080→80
  • timergagal (keluar 127)
    dari alpine:3.22
  • dbgagal (keluar 1)
    dari postgres:18-alpine tanpa nama → /var/lib/postgresql

Pek beku (image)

  • alpine:3.221 layer · 12.9MB · sedang diguna
  • nginx:1.30-alpine8 layer · 93.5MB · sedang diguna
  • postgres:18-alpine9 layer · 433MB · sedang diguna

Loker (volume)

  • 596e2561bb82… (tanpa nama)0 fail · diguna oleh db

3 container (1 berjalan), 3 image, 1 loker.

Semak

Nota untuk syif malam seterusnya. Di mana anda tengok dulu?

Seret kad ke dalam kotak. Atau ketik kad, kemudian ketik kotak.

      Cuba

      Bekas 3: db berhenti dengan Exited (1). Baca apa yang ia minta. Kemudian berikan.

      Laptop anda~

      • Port laptop 8080 → web port 80

      Bekas (container)

      • webberjalan
        dari nginx:1.30-alpine 8080→80
      • timerberjalan
        dari alpine:3.22
      • dbgagal (keluar 1)
        dari postgres:18-alpine tanpa nama → /var/lib/postgresql

      Pek beku (image)

      • alpine:3.221 layer · 12.9MB · sedang diguna
      • nginx:1.30-alpine8 layer · 93.5MB · sedang diguna
      • postgres:18-alpine9 layer · 433MB · sedang diguna

      Loker (volume)

      • 24cd65684366… (tanpa nama)0 fail · diguna oleh db

      3 container (2 berjalan), 3 image, 1 loker.

      Semak

      Semakan pukul 7 pagi. docker ps senaraikan db, timer dan web, semuanya Up. curl -sI localhost:8080 jawab HTTP/1.1 200 OK. Transkrip Docker: $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d4dbfc3db18b postgres:18-alpine "docker-entrypoint.s…" 3 seconds ago Up 3 seconds 5432/tcp db e7f0b578db98 alpine:3.22 "sleep 3600" 6 seconds ago Up 6 seconds timer 886924472cfa nginx:1.30-alpine "/docker-entrypoint.…" 9 seconds ago Up 9 seconds 0.0.0.0:8080->80/tcp web $ curl -sI localhost:8080 HTTP/1.1 200 OK Server: nginx/1.30.6 Date: Sat, 31 Oct 2026 01:00:15 GMT Content-Type: text/html Content-Length: 896 Last-Modified: Fri, 02 Oct 2026 17:14:31 GMT Connection: keep-alive ETag: "6abfe677-380" Accept-Ranges: bytes

      Laptop anda~

      • Port laptop 8080 → web port 80

      Bekas (container)

      • webberjalan
        dari nginx:1.30-alpine 8080→80
      • timerberjalan
        dari alpine:3.22
      • dbberjalan
        dari postgres:18-alpine tanpa nama → /var/lib/postgresql

      Pek beku (image)

      • alpine:3.221 layer · 12.9MB · sedang diguna
      • nginx:1.30-alpine8 layer · 93.5MB · sedang diguna
      • postgres:18-alpine9 layer · 433MB · sedang diguna

      Loker (volume)

      • 5308b82d4150… (tanpa nama)24 fail · diguna oleh db

      3 container (3 berjalan), 3 image, 1 loker.

      Semakan pukul 7 pagi: tiga bekas Up. Tingkap jawab 200 OK. Kedai boleh dibuka. Syif malam selesai!

      Anda berjaya!

      Kini anda boleh cari dan baiki container yang rosak dengan sendiri.

      Nak tahu lebih (pilihan)

      Senarai semak syif malam anda. 1: docker ps -a tunjuk keadaannya. 2: docker logs beritahu kenapa ia berhenti. 3: docker port atau docker inspect semak tetapannya. 4: buang bekas itu, kemudian jalankan semula dengan betul.

      Latihan sebenar (pilihan): rosakkan satu bekas dengan sengaja, kemudian baiki.

      Misi sebenar

      1. docker run -d --name db postgres:18-alpine
      2. docker ps -a
      3. docker logs db
      4. docker rm db
      5. docker run -d --name db -e POSTGRES_PASSWORD=secret postgres:18-alpine
      6. docker rm -f db

      0 daripada 6 langkah siap · Tanda anda disimpan.