DockerAdvanced
Docker Security Best Practices
Non-root user, least privilege, secrets, image scanning, hardened base image — বাংলায়।
15টি অংশবাংলা ভাষায়
Container বিচ্ছিন্ন হলেও যত্ন না নিলে ঝুঁকি থাকে। নিচের practices-গুলো production Docker-এর অপরিহার্য অংশ।
Non-root user
Dockerfiledockerfile
dockerfile
FROM node:20-alpine
# অ্যাপ-এর জন্য user তৈরি
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
WORKDIR /app
COPY . .
USER appuser
CMD ["node", "server.js"]Least privilege
--privilegedflag কখনোই ব্যবহার করবেন না- শুধু দরকারি capabilities দিন —
docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE - Host folder নিজের নামে bind mount — প্রভাব সীমিত
- Unused software image-এ না — attack surface কম
Secrets ম্যানেজমেন্ট
compose.ymlyaml
yaml
services:
api:
build: .
# .env file (git-এ নেই) থেকে load
env_file:
- .env.productionনা এগুলোর সাথে সম্পৃক্ত: docker run -e secret=... override-এর জন্য fine, কিন্তু value টার্মিনাল history-তে পরে যায়। Swarm secrets/file-based env সেরা।
Image scanning
Scan vulnerablebash
bash
# Docker Scout (built-in, Docker Desktop-এ আছে)
docker scout quickview my-api
# Trivy (open-source, দ্রুত)
trivy image node:20-slimBase image hardening
| Choice | বিবেচনা |
|---|---|
node:20-slim | slim — কম package, maintained |
node:20-alpine | ছোট, তবে musl-based — কিছু native modules আলাদা |
distroless (gcr.io) | শুধু runtime — shell নেই, সবচেয়ে নিরাপদ |
static/chainguard | zero-CVE images |
আরও চেক
- Image tag-এ exact version (
node:20-alpine) —latestনয় docker historyদিয়ে image-এর পূর্বে অস্বাভাবিক কিছু আছে কিনা দেখুন- Run process-এর
USERনিশ্চিত —docker top <container> - Registry-এ private image-এ access control
- Logs/data এনক্রিপশন — TLS (HTTPS) upstream
নিয়মিত ভাবে
Image scan + npm audit + OS update — নিয়মিত CI-তে চালান; নতুন CVE release-এর সাথে সাথে fix করতে হবে।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।