Peta dunia

 

EN: Read in English

Dunia D1: Container Pertama

Tetapan dengan -e

Anda akan belajar: beri container tetapannya dengan -e, dan baca apa yang ia minta.

Teks BM belum disemak oleh penutur asli.

Disemak dengan Docker Engine 29 pada 31 Okt 2026

Masalahnya

docker run mulakan bekas Postgres bernama db. Sekejap kemudian docker ps -a tunjuk db Exited (1). Transkrip Docker: $ docker run -d --name db postgres:18-alpine f8e4773339ff69b8134322177bb70f78a323bebd8ea9c74cf88b43d965be38c6 $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f8e4773339ff postgres:18-alpine "docker-entrypoint.s…" 3 seconds ago Exited (1) 3 seconds ago db

Laptop anda~

  • Tiada tingkap terbuka

Bekas (container)

  • Belum ada container

Pek beku (image)

  • alpine:3.221 layer · 12.9MB
  • postgres:18-alpine9 layer · 433MB

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

Anda mulakan bekas pangkalan data, db. Sesaat kemudian ia kata Exited (1). Ada sesuatu yang tertinggal. Tapi apa?

Cuba

Tanya db kenapa. Baca lognya.

Laptop anda~

  • Tiada tingkap terbuka

Bekas (container)

  • dbgagal (keluar 1)
    dari postgres:18-alpine tanpa nama → /var/lib/postgresql

Pek beku (image)

  • alpine:3.221 layer · 12.9MB
  • postgres:18-alpine9 layer · 433MB · sedang diguna

Loker (volume)

  • 618a61fe96bb… (tanpa nama)0 fail · diguna oleh db

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

Tengok

docker run dengan -e NAME=Aina mulakan satu bekas. Di dalam, printenv NAME paparkan Aina. Transkrip Docker: $ docker run --rm -e NAME=Aina alpine:3.22 printenv NAME Aina

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.

-e lekatkan nota pada penutup bekas. Nota itu ialah environment variable (pemboleh ubah persekitaran): NAME=Aina tetapkan NAME kepada Aina. Aplikasi di dalam membacanya.

Cuba

Bina arahan yang beri db kata laluannya.

Ketik kepingan ikut turutan yang betul.

…

Cuba

Baiki db. Buang bekas yang rosak. Kemudian mulakan yang baru dengan kata laluan.

Laptop anda~

  • Tiada tingkap terbuka

Bekas (container)

  • dbgagal (keluar 1)
    dari postgres:18-alpine tanpa nama → /var/lib/postgresql

Pek beku (image)

  • alpine:3.221 layer · 12.9MB
  • postgres:18-alpine9 layer · 433MB · sedang diguna

Loker (volume)

  • 618a61fe96bb… (tanpa nama)0 fail · diguna oleh db

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

Teka

Anda beri db -e POSTGRES_PASSWORD=secret. Adakah pek beku postgres berubah?

Pilih satu jawapan.

Semak

Adakah Postgres jumpa kata laluannya? Leret setiap satu.

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

1 / 4-e POSTGRES_PASSWORD=secret
-e POSTGRES_PASSWORD=secret

Anda berjaya!

Kini anda boleh beri container tetapannya dengan -e.

Nak tahu lebih (pilihan)

docker inspect -f '{{.Config.Env}}' db senaraikan setiap nota pada bekas. Sesiapa yang boleh guna Docker boleh membacanya. Jadi jangan letak kata laluan sebenar dalam -e pada mesin yang dikongsi. Dunia D3 tunjuk cara lebih selamat. -e NAME tanpa nilai salin NAME dari laptop anda.

Latihan sebenar (pilihan):

Misi sebenar

  1. docker run --rm -e NAME=anda alpine:3.22 printenv NAME
  2. docker run -d --name db -e POSTGRES_PASSWORD=secret postgres:18-alpine
  3. docker logs db
  4. docker rm -f db

0 daripada 4 langkah siap · Tanda anda disimpan.