Docker یه ابزار Container-based هست که Development و Deployment رو ساده میکنه. اگه توسعهدهنده وب هستید، یاد گرفتن Docker ضروریه.
Docker چیه؟
یه پلتفرم Container برای بستهبندی، توزیع و اجرای برنامهها.
Container چیه؟
یه محیط ایزوله که برنامه با همه dependencies توش اجرا میشه. سبکتر از VM.
مزایا
Consistent Environment: کد شما همه جا یکسان اجرا میشه
Isolation: هر Container جدا
Portable: هر جا Docker باشه
Version Control: Container ها Version دارن
Scalability: راحت Scale میشه
مفاهیم اصلی
Image: قالب Container
Container: نمونه در حال اجرا از Image
Dockerfile: دستور ساخت Image
Registry: Docker Hub
Volume: ذخیره داده
Network: ارتباط بین Container
نصب Docker
Ubuntu: apt install docker.io
macOS/Windows: Docker Desktop
دستورات پایه
docker ps: Container های در حال اجرا
docker images: Image ها
docker pull nginx: دانلود Image
docker run nginx: اجرا
docker stop container-id: توقف
docker rm container-id: حذف
docker rmi image-id: حذف Image
مثال ساده
docker run -d -p 80:80 nginx
Nginx در Container، Port 80 host به 80 Container.
Dockerfile نمونه
FROM node:18
WORKDIR /app
COPY package.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
Build
docker build -t myapp .
Docker Compose
برای Multi-container. یه فایل docker-compose.yml:
services:
web:
image: nginx
ports: ["80:80"]
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: secret
docker-compose up
Volumes
ذخیره داده خارج از Container:
docker run -v /host/data:/container/data image
Networks
Container ها با اسم به هم وصل میشن:
docker network create mynet
docker run --network mynet ...
Environment Variables
docker run -e KEY=value image
یا در docker-compose.yml
WordPress در Docker
docker-compose.yml برای WordPress + MySQL معروف. توسعه محلی راحت.
Best Practices
Small Images: Alpine base
Multi-stage Build: کمتر حجم
Don't run as root: امنیت
Use .dockerignore: بیمصرف حذف
Layer caching: بهینه
Docker Hub
Registry پیشفرض. Image های آماده.
Kubernetes
مرحله بعد. برای Production Multi-server.
Podman
جایگزین Docker. Daemonless.
Security
Scan Images: docker scan
Non-root: USER در Dockerfile
Read-only: --read-only flag
Development Workflow
1. Dockerfile برای App
2. docker-compose.yml برای Multi-service
3. Git Push
4. CI/CD Build + Test
5. Deploy
سباهاست Docker
VPS و Dedicated سباهاست از Docker پشتیبانی کامل.
جمعبندی
Docker مهارت ضروری هر توسعهدهنده مدرن. با یاد گرفتنش، Development حرفهایتری خواهید داشت.