पाठ 28 / 28
सुरक्षा की बुनियात
Attack surface घटाने के लिए containers को non-root user के रूप में चलाएँ और base images को minimal व अद्यतन रखें।
root के रूप में न चलाएँ
डिफ़ॉल्ट रूप से, कंटेनर का प्रोसेस उसके अंदर root के रूप में चलता है। एक non-root यूज़र बनाकर उसमें स्विच करें ताकि कंटेनर से बाहर निकलने की स्थिति में नुकसान कम हो।
FROM node:22-alpine
WORKDIR /app
COPY . .
RUN npm ci --omit=dev
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser
CMD ["node", "server.js"]न्यूनतम बेस इमेज
कम इंस्टॉल किए गए पैकेज का मतलब है कम ज्ञात कमज़ोरियाँ। alpine या distroless बेस को प्राथमिकता दें, और सुरक्षा पैच पाने के लिए नियमित रूप से रीबिल्ड करें।
त्वरित जाँच: कंटेनर को अपने प्रोसेस को root के रूप में चलाने से क्यों बचना चाहिए?
- इससे इमेज तेज़ी से बिल्ड होती है
- अगर हमलावर कंटेनर से बाहर निकल जाए तो नुकसान सीमित रहता है
- root यूज़र वॉल्यूम उपयोग नहीं कर सकते
- यह networking बंद कर देता है
Answer
अगर हमलावर कंटेनर से बाहर निकल जाए तो नुकसान सीमित रहता है — non-root यूज़र के रूप में चलाने से, कंटेनर के समझौता होने पर उपलब्ध अधिकार कम हो जाते हैं।
अंतिम क्विज़ 1/8
अंतिम क्विज़
त्वरित जाँच: Container image क्या है?
- A running process
- A virtual disk drive
- A read-only template used to start containers
- A network
Answer
A read-only template used to start containers — Containers images के चलते instances हैं।
अंतिम क्विज़ 2/8
अंतिम क्विज़
त्वरित जाँच: कौन-सा flag container port को host पर publish करता है?
- -e
- -v
- -d
- -p
Answer
-p — -p host:container ports map करता है।
अंतिम क्विज़ 3/8
अंतिम क्विज़
त्वरित जाँच: Container हटने के बाद database data कैसे बचाएँ?
- Use a named volume
- Write inside the container
- Use --rm
- Use EXPOSE
Answer
Use a named volume — Volumes container की writable layer के बाहर रहते हैं।
अंतिम क्विज़ 4/8
अंतिम क्विज़
त्वरित जाँच: Dockerfile में EXPOSE क्या करता है?
- Publishes the port
- Documents the intended port only
- Opens the firewall
- Starts the app
Answer
Documents the intended port only — Publish करने के लिए -p या Compose ports चाहिए।
अंतिम क्विज़ 5/8
अंतिम क्विज़
त्वरित जाँच: कौन-सा Compose command stack को रोकता और हटाता है?
- docker compose up
- docker compose logs
- docker compose down
- docker compose pull
Answer
docker compose down — named volumes हटाने के लिए -v जोड़ें।
अंतिम क्विज़ 6/8
अंतिम क्विज़
त्वरित जाँच: Multi-stage build क्यों उपयोग करें?
- To skip tests
- To avoid tags
- To use root
- To ship a smaller final image
Answer
To ship a smaller final image — Build tools build stage में रहते हैं।
अंतिम क्विज़ 7/8
अंतिम क्विज़
त्वरित जाँच: Production में latest tag से क्यों बचें?
- It makes rollbacks and audits hard
- It is slower
- It is private
- It disables logs
Answer
It makes rollbacks and audits hard — Versions या commit hashes pin करें।
अंतिम क्विज़ 8/8
अंतिम क्विज़
त्वरित जाँच: Containers को non-root user के रूप में क्यों चलाएँ?
- It builds faster
- It limits damage if the app is compromised
- It enables volumes
- It saves RAM
Answer
It limits damage if the app is compromised — Least privilege जोखिम घटाता है।