EN: Read in English
Dunia D2: Resepi
Jalan sebagai USER bukan root
Anda akan belajar: jalankan aplikasi sebagai pengguna biasa, supaya penceroboh boleh buat lebih sedikit.
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)
- api:1.06 layer · 244MB
- node:24-alpine4 layer · 244MB
0 container (0 berjalan), 2 image, 0 loker.
API anda berjalan sebagai root di dalam bekas. Satu pepijat biarkan orang asing masuk. Sekarang orang asing itu pun root, dengan setiap kunci dapur.
Tengok
Ketik baris yang pilih siapa jalankan aplikasi.
0 daripada 1 dijumpai
pengguna bukan root (non-root user): Pengguna biasa dengan hak yang sedikit. Jika orang menceroboh, mereka boleh buat lebih sedikit. ada hak yang sedikit, macam pembantu dapur. USER node tukar kepada pengguna itu. Image node sudah ada pengguna bernama node.
Cuba
Tambah USER node di hujung resepi. Bina api:1.1. Kemudian tanya whoami.
Laptop anda~/api
- Tiada tingkap terbuka
Bekas (container)
- Belum ada container
Pek beku (image)
- api:1.06 layer · 244MB
- node:24-alpine4 layer · 244MB
0 container (0 berjalan), 2 image, 0 loker.
Petunjuk
USER boleh jadi baris terakhir. Ia tetapkan siapa jalankan CMD.Teka
Satu resepi tulis USER node, dan selepasnya RUN apk add --no-cache curl. Apa jadi?
Pilih satu jawapan.
Semak
Laptop anda~/api
- Tiada tingkap terbuka
Bekas (container)
- Belum ada container
Pek beku (image)
- api:1.06 layer · 244MB
- node:24-alpine4 layer · 244MB
0 container (0 berjalan), 2 image, 0 loker.
Ralat sebenar: Permission denied, kod keluar 99. Maksudnya: hanya root boleh memasang. Pasang dulu, kemudian tukar dengan USER.
Semak
Tabiat yang bagus? Leret ke kanan untuk ya, ke kiri untuk “perlu dibaiki”.
Leret ke kanan untuk bagus, ke kiri untuk perlu baiki. Atau guna butang.
Pasang pakej dulu, kemudian tambah USER dekat hujung
Anda berjaya!
Kini anda boleh jalankan aplikasi sebagai pengguna bukan root.
Nak tahu lebih (pilihan)
docker run -u 1000 pilih pengguna untuk satu kali jalan. USER dalam resepi ialah pilihan asal yang selamat. Aplikasi perlu tulis satu folder? Serahkan kepadanya: COPY --chown=node:node . .. Dalam Dunia D5 anda tambah lagi kunci.
Misi sebenar
docker run --rm hello:1.0 whoami
0 daripada 3 langkah siap · Tanda anda disimpan.
English
Your API runs as root inside the box. A bug lets a stranger in. Now the stranger is root too, with every key in the kitchen.
A non-root user has few rights, like a kitchen helper. USER node switches to one. The node images already have a user called node.
Add USER node to the end of the recipe. Build api:1.1. Then ask whoami.
A recipe says USER node, and after it RUN apk add --no-cache curl. What happens?
Real error: Permission denied, exit code 99. Plain words: only root may install. Install first, then switch with USER.
Good habit? Swipe right for yes, left for “needs work”.
You can now run your app as a non-root user.
Anda dah siapkan ini. Latihan lagi pun bagus!
Dokumentasi rasmi: Dockerfile reference: USER · Docker docs: Best practices (USER)
Anda dah belajar 25 minit. Rehat sekejap bantu otak anda.
Pecutan selesai! Fokus yang hebat. Regangkan badan seminit?