🎓 תלמיד רשום? חזור לפורטל לאחר הלימוד פורטל התלמידים | 🚀 גולש חדש? הצטרף חינם

📋 תוכן המדריך

למה Docker חשוב בעולם המודרני?

בעידן הדיגיטלי המודרני, חברות צריכות לפתח, לבדוק ולפרוס אפליקציות בקצב מהיר וביעילות גבוהה. בעבר, התחת "עבודה על המכונה שלי" הוביל לבעיות רבות כאשר קוד עבד בסביבה של מפתח אך לא בסביבת ייצור. Docker פותר בעיה זו באמצעות קונטיינרים - יחידות סטנדרטיות המכילות את כל מה שצריך לאפליקציה (קוד, תלויות, סביבה) כדי להרוץ.

למה Docker הפך חשוב כל כך?

  • עקביות: קונטיינר עובד בדיוק אותו הדבר בכל הסביבות - בעבודה של מפתח, בשרת בדיקה, ובייצור
  • יעילות: קונטיינרים קלים וקטנים יותר מ-Virtual Machines
  • מהירות: פריסה של קונטיינר היא עניין של שניות, לא שעות
  • סקלביליות: קל לחלק אפליקציה למספר קונטיינרים ולהרחיב
  • DevOps: Docker הפך לסטנדרט בתעשייה ב-CI/CD pipelines

1. יסודות: מה זה Docker וקונטיינרים?

Docker היא פלטפורמה קוד-פתוח המאפשרת לך "לכלול" אפליקציות בתוך מה שנקרא "קונטיינרים". קונטיינר הוא יחידה הנמצאת בין וירטואליזציה מלאה (Virtual Machine) לבין הרצה ישירה של קוד.

🔧 תרכיבי Docker

רכיב תיאור דוגמה
Image תבנית קריאה-בלבד המכילה את כל הקובץ, הקוד והתלויות ubuntu:20.04, python:3.9
Container הרצה חיה של Image - דוגמה של היישום my-app-container
Dockerfile קובץ הנחיות לבניית Image FROM python:3.9
Docker Hub ריפוזיטורי ציבורי של Images מוכנות redis, mysql, nginx
💡 נקודת חשיבה: Image היא כמו "תמונת תיקייה" (snapshot) של אפליקציה, וקונטיינר היא ההרצה החיה שלה. תוכל להרוץ מספר קונטיינרים מאותה Image.

2. בנייה: יצירת Dockerfile ותמונות

כדי ליצור Image, נעשה שימוש בקובץ שנקרא Dockerfile. קובץ זה מכיל סדרת הנחיות שמגדירות כיצד לבנות את ה-Image.

דוגמה Dockerfile בסיסי

# השתמש ב-Python 3.9 כבסיס
FROM python:3.9-slim

# הגדר ספריית עבודה
WORKDIR /app

# העתק את requirements.txt
COPY requirements.txt .

# התקן dependencies
RUN pip install -r requirements.txt

# העתק את כל קוד היישום
COPY . .

# חשוף את יציאה 5000
EXPOSE 5000

# הפקודה להרצה
CMD ["python", "app.py"]

בנייה והרצה

# בנייה של Image בשם my-app וגרסה 1.0
docker build -t my-app:1.0 .

# הרצה של קונטיינר מה-Image
docker run -p 5000:5000 my-app:1.0
⚠️ אזהרה: תמיד השתמש בגרסיה ספציפית של תמונות בסיס (כמו python:3.9-slim) ולא ב-latest, כדי להימנע מעדכונים בלתי צפויים.

3. הרצה: ניהול קונטיינרים עם Docker CLI

כשיש לך Image, תוכל להרוץ קונטיינרים משלה. ישנן הרבה אפשרויות שימושיות.

פקודות ניהול בסיסיות

# הרא קונטיינר בפורגראונד
docker run -it ubuntu:20.04 /bin/bash

# הרץ בתצוגה - background
docker run -d --name my-web -p 80:8080 nginx:latest

# ראה רשימה של קונטיינרים רצים
docker ps

# ראה את כל הקונטיינרים (כולל מעצורים)
docker ps -a

# הצג logs של קונטיינר
docker logs my-web

# עצור קונטיינר
docker stop my-web

# הפעל קונטיינר שנעצר
docker start my-web

# מחק קונטיינר
docker rm my-web
🔐 ערך חבוי: השתמש ב-`docker exec -it container_name /bin/bash` כדי להיכנס לקונטיינר רץ כדי לבדוק מה קורה בו בזמן אמת.

4. Compose: ניהול אפליקציות מרובות קונטיינרים

כאשר יש לך אפליקציה שדורשת מספר שירותים (בסיס נתונים, cache, web server), Docker Compose מאפשר לך להגדיר את כולם בקובץ YAML אחד ולהריץ את כולם בפקודה אחת.

דוגמה docker-compose.yml

version: '3.8'

services:
  web:
    build: .
    ports:
      - "5000:5000"
    environment:
      - DATABASE_URL=postgresql://db:5432/mydb
    depends_on:
      - db

  db:
    image: postgres:13
    environment:
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: mydb
    volumes:
      - db-data:/var/lib/postgresql/data

  redis:
    image: redis:6-alpine
    ports:
      - "6379:6379"

volumes:
  db-data:

הרצה עם Compose

# הרץ את כל השירותים
docker-compose up

# הרץ בתצוגה
docker-compose up -d

# עצור את כל השירותים
docker-compose down

# צפה ב-logs
docker-compose logs -f
🎁 בונוס: Docker Compose אידיאלי לפיתוח מקומי. בייצור, השתמש ב-Kubernetes או שירותי ניהול קונטיינרים אחרים.

5. מושגים מתקדמים וטכניקות אופטימיזציה

Volumes ו-Bind Mounts

כדי להחזיק נתונים בקונטיינר גם אחרי כיבויו:

# Volume ל-data persistence
docker run -v my-volume:/data my-app:1.0

# Bind mount לתיקייה בהוסט
docker run -v /home/user/data:/app/data my-app:1.0

Networking

קונטיינרים רבים יכולים להתקשר זה לזה דרך רשתות Docker:

# יצור רשת
docker network create my-network

# הרץ קונטיינרים על הרשת
docker run -d --network my-network --name app1 my-app:1.0
docker run -d --network my-network --name app2 my-app:1.0

# app1 יכול להתקשר ל-app2 דרך שם הקונטיינר
# curl http://app2:5000

אופטימיזציה של Images

# Multi-stage Dockerfile לאופטימיזציה FROM python:3.9 AS builder WORKDIR /app COPY . . RUN pip install -r requirements.txt FROM python:3.9-slim WORKDIR /app COPY --from=builder /app /app CMD ["python", "app.py"]

6. מסקנות ויישום מעשי

Docker שינה את דרך התפתחות וב-deployment של אפליקציות. כעת, בעלי עסקים, DevOps Engineers ו-Developers יכולים לעבוד בקצב מהיר יותר ובביטחון יותר גדול שהאפליקציה תעבוד בכל סביבה.

נקודות חשובות לזכור:

השלבים הבאים שלך:

  1. התקן Docker על המחשב שלך
  2. בנה את Dockerfile הראשון שלך לאפליקציה קטנה
  3. פרוס את זה ל-Docker Hub כדי ללמוד על registries
  4. בנה אפליקציה עם Docker Compose (web + database)
  5. למד על Kubernetes לניהול advanced של קונטיינרים

📋 משימות לשבוע הקרוב

רמה בסיסית:

  1. התקן Docker Desktop על המחשב שלך
  2. בנה Dockerfile פשוט שמריץ Python script פשוט
  3. בנה את ה-Image וזרוק קונטיינר
  4. צפה בהפעלה שלו עם docker logs

רמה בינונית:

  1. צור docker-compose.yml עם web service ו-database
  2. בנה יישום Flask/Node.js בסיסי שמתחבר לבסיס נתונים
  3. הרץ את כל זה עם docker-compose up
  4. בדוק שהאפליקציה עובדת כצפוי

רמה מתקדמת:

  1. בנה multi-stage Dockerfile לאפליקציה קיימת שלך
  2. אופטימיזציה של גודל ה-Image
  3. העלה ל-Docker Hub וצור public repository
  4. כתוב CI/CD pipeline (GitHub Actions) שבנה ודוחף לHub

🚀 הצטרף לקורס ה-Docker המלא

בעל מפתחים, DevOps Engineers ו-Developers רבים כבר הצטרפו לקורס החינמי שלנו על Docker. תלמדו יישום מעשי, טכניקות advanced ותגובה בזמן אמת מחברי הקורס.

הצטרף חינם - התחל ללמוד עכשיו