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 حرفه‌ای‌تری خواهید داشت.