Peta dunia

 

EN: Read in English

Dunia D5: Hantar & Lindung · Cabaran bos

Terbit dengan selamat

Anda akan belajar: terbitkan image bukan root dengan SBOM ke GHCR, dengan sifar lubang kritikal.

Teks BM belum disemak oleh penutur asli.

Disemak dengan Docker Engine 29 pada 31 Okt 2026

Masalahnya

docker run --rm kedai-api:1.0 whoami cetak root. Transkrip Docker: $ docker run --rm kedai-api:1.0 whoami root

Laptop anda~/kedai-api

  • Tiada tingkap terbuka

Bekas (container)

  • Belum ada container

Pek beku (image)

  • kedai-api:1.06 layer · 244MB
  • node:24-alpine4 layer · 244MB

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

Boss: terbitkan API Kedai Kancil ke GHCR. Tiga peraturan: bukan root, ada SBOM, sifar lubang CRITICAL. Bilik 1 dulu: pek itu masih jalan sebagai root.

Cuba

Bilik 1: tambah USER node di hujung resepi. Kemudian bina kedai-api:1.0 semula.

Laptop anda~/kedai-api

  • Tiada tingkap terbuka

Bekas (container)

  • Belum ada container

Pek beku (image)

  • kedai-api:1.06 layer · 244MB
  • node:24-alpine4 layer · 244MB

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

Semak

Bilik 2: peraturan anda ialah sifar CRITICAL. Asingkan setiap penemuan daripada imbasan semalam.

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

      Tengok

      bash
      trivy image --severity CRITICAL --exit-code 1 kedai-api:1.0
      …
      echo $?
      0
      Trivy semak kedai-api:1.0 untuk lubang CRITICAL dan keluar dengan 0: tiada yang dijumpai.

      Pek API anda, diimbas betul-betul. Kod keluar 0: sifar lubang CRITICAL. Peraturan 3 dipenuhi.

      Cuba

      Bilik 3: hantar ke GHCR. Token GitHub anda ada dalam $CR_PAT. Log masuk dengannya, kemudian tag dan push.

      Laptop anda~/kedai-api

      • Tiada tingkap terbuka

      Bekas (container)

      • Belum ada container

      Pek beku (image)

      • kedai-api:1.06 layer · 244MB
      • node:24-alpine4 layer · 244MB

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

      Semak

      Bilik 4: pek itu mesti bawa senarai bahannya. Bina satu arahan yang bina, labelkan dan push.

      Ketik kepingan ikut turutan yang betul.

      …

      Cuba

      Bilik terakhir, betul-betul, dengan API Kedai Kancil anda (Misi 1).

      Misi sebenar

      1. read -s CR_PAT && export CR_PAT
      2. echo $CR_PAT | docker login ghcr.io -u YOUR-NAME --password-stdin
      3. docker buildx build --sbom=true --provenance=mode=max -t ghcr.io/YOUR-NAME/kedai-kancil-api:1.0.0 --push .
      4. trivy image --severity CRITICAL --exit-code 1 ghcr.io/YOUR-NAME/kedai-kancil-api:1.0.0
      5. git tag v1.0.0 && git push origin v1.0.0

      0 daripada 6 langkah siap · Tanda anda disimpan.

      Semak

      API awam GitHub boleh nampak repo dan tag anda. Ia tak nampak pakej tanpa log masuk.

      Semak di GitHub

      Nama pengguna anda dihantar ke api.github.com sahaja.

      • Repo kedai-kancil anda awamBelum disemak
      • Ia ada tag versi, contohnya v1.0.0Belum disemak

      Semak

      Semak yang selebihnya sendiri.

      Semak sendiri

      1. docker inspect -f '{{.Config.User}}' ghcr.io/YOUR-NAME/kedai-kancil-api:1.0.0
      2. docker buildx imagetools inspect ghcr.io/YOUR-NAME/kedai-kancil-api:1.0.0

      0 daripada 4 langkah siap · Tanda anda disimpan.

      Anda berjaya!

      Kini anda boleh terbitkan image yang selamat dan berlabel ke registry.