Uch tushuncha
Image dastur va bog‘liqliklar shabloni. Container shu image’dan ishlayotgan nusxa. Volume runtime ma’lumotni container hayotidan mustaqil saqlaydi. Bazani faqat container writable layer’ida saqlash uni almashtirganda ma’lumot yo‘qotishi mumkin.
Xavfsiz build
Kichik, qo‘llab-quvvatlanadigan base image, versiyalangan paketlar, .dockerignore va non-root USER ishlating. Sirni ARG, ENV yoki COPY bilan image ichiga joylamang. Container VM bilan bir xil izolyatsiya emas; Docker socket’ni ilovaga bermang.
Port va tarmoq
EXPOSE hujjatlashtiradi; hostga publish alohida. Lokal portni 127.0.0.1 ga bog‘lang. PostgreSQL tashqariga ochilmasin, ichki Compose tarmog‘idan foydalanilsin. Quyidagi misol Dockerfile matnini o‘qiydi; Docker daemon talab qilmaydi.
Python’da ko‘rib chiqamiz
dockerfile = "FROM python:3.14-slim\nWORKDIR /app\nCOPY . .\nUSER 10001\n"
checks = {"non-root": "USER 10001" in dockerfile,
"no-privileged": "--privileged" not in dockerfile}
print(sum(checks.values()))Misolni
Mustaqil mashq
Ushbu loyihadagi Dockerfile’ni o‘qing. Har bir qatlam vazifasini yozing. .env va data fayllari build context’dan chiqarilganini tekshiring.