EN: Read in English
Dunia D2: Resepi
Cache mount BuildKit dan rahsia binaan
Anda akan belajar: pinjamkan kunci kepada satu langkah build, dan simpan muat turun di rak antara build.
Teks BM belum disemak oleh penutur asli.
Disemak dengan Docker Engine 29 pada 31 Okt 2026
Masalahnya
Laptop anda~/api
- Tiada tingkap terbuka
Bekas (container)
- Belum ada container
Pek beku (image)
- node:24-alpine4 layer · 244MB
0 container (0 berjalan), 1 image, 0 loker.
Anda beri token npm melalui ARG. Build pun sudah beri amaran: SecretsUsedInArgOrEnv. Sekarang tengok docker history: sesiapa yang ada image boleh baca token itu!
Tengok
Ketik baris yang meminjam kunci.
0 daripada 1 dijumpai
rahsia binaan (build secret): Kunci yang dipinjamkan kepada satu langkah RUN sahaja. Ia tidak masuk ke dalam layer. ialah kunci yang dipinjamkan kepada satu langkah RUN. Bila langkah itu tamat, kunci itu dipulangkan. Tiada layer (lapisan) yang menyimpannya.
Cuba
Bina resepi selamat ini sebagai api:1.0. Cuba cara biasa dulu dan baca ralatnya. Kemudian pinjamkan kunci dari token.txt.
Laptop anda~/api
- Tiada tingkap terbuka
Bekas (container)
- Belum ada container
Pek beku (image)
- node:24-alpine4 layer · 244MB
0 container (0 berjalan), 1 image, 0 loker.
Petunjuk
--secret id=npm_token,src=token.txt pinjamkan isi fail itu sebagai rahsia.Cuba
Muat turun pun lambat. cache mount: Rak dapur yang BuildKit simpan antara bakar, untuk muat turun. Ia tiada dalam image. ialah rak dapur yang BuildKit simpan antara build. Ia tiada dalam image. Bina baris RUN yang menggunakannya.
Ketik kepingan ikut turutan yang betul.
Teka
Anda bina api:1.0 dengan rahsia itu. Adakah docker history api:1.0 tunjuk test-token-123?
Pilih satu jawapan.
Semak
Laptop anda~/api
- Tiada tingkap terbuka
Bekas (container)
- Belum ada container
Pek beku (image)
- node:24-alpine4 layer · 244MB
0 container (0 berjalan), 1 image, 0 loker.
Tiada token di mana-mana. Layer RUN cuma tulis npm ci. token.txt ada dalam .dockerignore juga, jadi ia tak pernah sampai ke dapur.
Semak
Selamat? Leret ke kanan untuk ya, ke kiri untuk “perlu dibaiki”.
Leret ke kanan untuk bagus, ke kiri untuk perlu baiki. Atau guna butang.
Beri token npm melalui --build-arg
Anda berjaya!
Kini anda boleh pinjamkan rahsia dan simpan muat turun di rak.
Nak tahu lebih (pilihan)
Tanpa env=, rahsia itu jadi fail di /run/secrets/<id>. Tanpa required=true, rahsia yang tiada cuma tak muncul. Rahsia tak ubah cache: token baharu tak bakar semula. Guna token ujian sahaja semasa berlatih.
Misi sebenar
RUN --mount=type=secret,id=demo test -f /run/secrets/demodocker build --secret id=demo,src=token.txt -t demo:1.0 .
0 daripada 4 langkah siap · Tanda anda disimpan.
English
You passed an npm token with ARG. The build even warned you: SecretsUsedInArgOrEnv. Now look at docker history: anyone with the image can read the token!
A build secret is a key lent to one RUN step. When the step ends, the key goes back. No layer keeps it.
Build the safe recipe as api:1.0. Try it plain first and read the error. Then lend the key from token.txt.
--secret id=npm_token,src=token.txt lends the file’s text as the secret.Downloads are slow too. A cache mount is a pantry shelf BuildKit keeps between builds. It is not in the image. Build the RUN line that uses it.
You built api:1.0 with the secret. Will docker history api:1.0 show test-token-123?
No token anywhere. The RUN layer only says npm ci. token.txt is in .dockerignore too, so it never reached the kitchen.
Safe? Swipe right for yes, left for “needs work”.
You can now lend secrets safely and keep downloads on a shelf.
Anda dah siapkan ini. Latihan lagi pun bagus!
Dokumentasi rasmi: Docker docs: Build secrets · Docker docs: Optimize cache usage (cache mounts) · Dockerfile reference: RUN --mount · Build check: SecretsUsedInArgOrEnv
Anda dah belajar 25 minit. Rehat sekejap bantu otak anda.
Pecutan selesai! Fokus yang hebat. Regangkan badan seminit?