Огляд курсу:

Цей курс призначений для розробників, інженерів DevOps, системних адміністраторів та всіх, хто бажає глибоко зануритися у світ контейнеризації та оркестрації. Курс охоплює основи Docker та Kubernetes, починаючи з базових концепцій і закінчуючи практичними навичками розгортання та управління контейнеризованими застосунками. Мета курсу - надати студентам комплексне розуміння технологій контейнеризації, їх переваг, інструментів та кращих практик.

---

Детальний план-конспект:

1. Основи контейнеризації

1.1. Проблема традиційних деплоїв

  • Детальніше:
  • "Works on my machine": несумісність середовищ через відмінності в ОС, бібліотеках, залежностях.
  • Ручне налаштування: часозатратне та схоже на помилки.
  • Віртуальні машини (VM): важкі, повільні у запуску, високі вимоги до ресурсів.
  • Приклади: порівняння часу розгортання VM vs контейнера.
  • Рішення: контейнери як легковага альтернатива.

1.2. Поняття контейнера, образу, реєстру

  • Контейнер: ізольоване середовище для запуску застосунку з усіма залежностями.
  • Образ: шаблон для створення контейнерів (read-only).
  • Реєстр: сховище образів (Docker Hub, приватні реєстри).
  • Відмінність від VM: контейнери ділять ядро ОС, VM мають власне ядро.

1.3. Типові кейси

  • Мікросервіси: ізоляція компонентів, незалежне масштабування.
  • CI/CD: швидке тестування та розгортання.
  • Тестові середовища: швидке створення ідентичних середовищ.
  • Ізоляція залежностей: уникнення конфліктів бібліотек.

1.4. Огляд екосистеми

  • Docker: найпопулярніший інструмент контейнеризації.
  • Containerd, Podman: альтернативи Docker.
  • Kubernetes: оркестратор для управління контейнерами у кластері.

Практика:

  • Встановлення Docker.
  • Розгортання першого контейнера (наприклад, Nginx).

---

2. Основи Docker

2.1. Архітектура Docker

  • Client-Server модель:
  • Docker Client: відправляє команди.
  • Docker Daemon: виконує команди, керує контейнерами.
  • Registry: сховище образів.
  • Images та Containers: образи — це шаблони, контейнери — запущені екземпляри.

2.2. Базові команди

  • docker run: запуск контейнера.
  • Параметри: --rm, -d, -it.
  • docker ps: список активних контейнерів.
  • docker stop/rm: зупинка та видалення контейнера.
  • docker images: список образів.
  • docker pull/push: завантаження/завантаження образів у реєстр.

2.3. Мапінг портів та мережі

  • -p HOST:CONTAINER: мапінг портів.
  • Bridge мережа: за замовчуванням, ізолює контейнери.
  • Host мережа: контейнер використовує мережу хоста.
  • Практика: розгортання веб-сервера з мапінгом порту.

2.4. Volumes та Bind Mounts

  • Volumes: керовані Docker, зберігають дані між запусками.
  • Bind Mounts: монтують каталоги хоста в контейнер.
  • Практика: збереження даних бази даних у контейнері.

---

3. Створення та керування Docker-образами

3.1. Dockerfile

  • Структура: послідовність інструкцій.
  • Основні інструкції:
  • FROM: базовий образ.
  • RUN: виконання команд у середовищі образу.
  • COPY/ADD: копіювання файлів.
  • EXPOSE: вказівка портів.
  • CMD/ENTRYPOINT: команда для запуску контейнера.
  • Практика: створення Dockerfile для Node.js застосунку.

3.2. Кешування шарів та оптимізація

  • Кешування: Docker кешує шари між побудовами.
  • Оптимізація:
  • Об'єднати RUN команди.
  • Використовувати .dockerignore.
  • Мінімізувати кількість шарів.

3.3. Multi-stage Build

  • Ціль: зменшення розміру фінального образу.
  • Приклад: побудова застосунку на етапі builder, копіювання артефактів у легкий образ (наприклад, alpine).

3.4. Теги та версіонування

  • Теги: docker build -t image:tag.
  • Версіонування: семантичне версіонування (наприклад, 1.0.0).
  • Docker Hub: завантаження образу (docker push).

Практика:

  • Створення оптимізованого образу з multi-stage build.
  • Завантаження образу у Docker Hub.

---

4. Docker Compose. Part 1

4.1. Навіщо Docker Compose?

  • Проблема: управління декількома контейнерами вручну.
  • Рішення: опис застосунку у docker-compose.yml.

4.2. Структура docker-compose.yml

  • version: версія формату.
  • services: опис сервісів (контейнерів).
  • image/build: образ або Dockerfile.
  • ports: мапінг портів.
  • volumes: монтування томів.
  • environment: змінні середовища.

4.3. Базові команди

  • docker compose up: запуск застосунку.
  • docker compose down: зупинка та видалення.
  • docker compose ps: список контейнерів.
  • docker compose logs: перегляд логів.

Практика:

  • Створення стеку web + db (наприклад, Nginx + PostgreSQL).

---

5. Docker Compose. Part 2

5.1. Мережі в Compose

  • Дефолтна мережа: всі сервіси можуть спілкуватися між собою.
  • Явні мережі: визначення власних мереж (networks у docker-compose.yml).
  • Доступ по імені: сервіси доступні за іменами (наприклад, db).

5.2. Зовнішні ресурси

  • Volumes: монтування зовнішніх томів.
  • Networks: підключення до зовнішніх мереж.
  • Secrets/Configs: управління конфіденційною інформацією.

5.3. Профілі та змінні середовища

  • Профілі: вибіркове розгортання сервісів (profiles у docker-compose.yml).
  • Змінні середовища: використання .env файлів.
  • Override-файли: docker-compose.override.yml для налаштувань dev/prod.

5.4. Перехід до Kubernetes

  • Обмеження Compose: проблеми з масштабуванням, відсутністю самозагойного механізму.
  • Kubernetes: кластерна оркестрація, автоматичне відновлення, масштабування.

Практика:

  • Налаштування мереж та volumes у docker-compose.yml.
  • Використання override-файлів для різних середовищ.

---

6. Основи Kubernetes

6.1. Проблеми масштабування

  • Docker/Compose: обмеження для великих застосунків.
  • Kubernetes: управління кластером вузлів, автоматичне масштабування.

6.2. Архітектура Kubernetes

  • Control Plane:
  • API Server: вхідна точка для управління кластером.
  • etcd: розподілена БД для зберігання стану.
  • Scheduler: розміщення Pod на вузлах.
  • Controller Manager: управління контролерами (наприклад, ReplicaSet).
  • Worker Nodes:
  • Kubelet: агент на вузлі, виконує команди control plane.
  • Kube-proxy: управління мережевими правилами.

6.3. Базові об’єкти

  • Pod: найменша одиниця, може містити один або кілька контейнерів.
  • Deployment: декларативне управління Pod.
  • ReplicaSet: підтримка заданої кількості реплік Pod.
  • Service: абстракція для доступу до Pod.
  • Namespace: логічне розділення ресурсів.

6.4. Інструменти

  • kubectl: CLI для управління кластером.
  • YAML маніфести: декларативне визначення ресурсів.
  • Imperative vs Declarative: різниця в підходах (наприклад, kubectl run vs kubectl apply).

Практика:

  • Встановлення Minikube/Kind для локального кластера.
  • Розгортання першого Pod та Service.

---

7. Pod, Deployment та ReplicaSet в деталях

7.1. Pod

  • Життєвий цикл: створення, запуск, завершення.
  • Multi-container Pod: спільне середовище для тісно інтегрованих контейнерів (наприклад, застосунок + sidecar).
  • Практика: розгортання Pod з двома контейнерами.

7.2. ReplicaSet

  • Ціль: підтримка заданої кількості реплік Pod.
  • Зв’язок з Deployment: Deployment керує ReplicaSet.

7.3. Deployment

  • Rolling Update: поступове оновлення Pod.
  • Rollback: повернення до попередньої версії.
  • Масштабування: зміна кількості реплік (kubectl scale).
  • Практика: розгортання Deployment, оновлення образу, масштабування.

---

8. Service та Ingress у Kubernetes

8.1. Service

  • Типи:
  • ClusterIP: внутрішній доступ у кластері.
  • NodePort: доступ ззовні на порт вузла.
  • LoadBalancer: зовнішній балансувальник надається хмарним провайдером.
  • Селектори: як Service знаходить Pod.
  • Endpoints: IP-адреси Pod, що відповідають селектору.

8.2. Ingress

  • Концепція: управління зовнішнім HTTP(S) трафіком.
  • Ingress-controller: реалізація правил маршрутизації (наприклад, Nginx Ingress Controller).
  • Правила: host-based та path-based routing.
  • Практика: налаштування доступу до декількох сервісів через один вхід.

8.3. Безпека та TLS

  • Секрети: зберігання сертифікатів (kubectl create secret tls).
  • Cert-manager: автоматизація видачі сертифікатів Let's Encrypt.
  • Практика: налаштування TLS для Ingress.

---

Практичні Вправи та Проекти:

1. Проект 1: Розгортання блог-платформи (наприклад, WordPress + MySQL) у Docker.
2. Проект 2: Міграція застосунку з Docker Compose до Kubernetes.
3. Проект 3: Налаштування CI/CD для контейнеризованого застосунку (наприклад, GitHub Actions + Docker Hub).
4. Проект 4: Розгортання мікросервісного застосунку з Ingress та TLS у Kubernetes.

Додаткові Ресурси:

  • Документація:
  • [Docker Docs](https://docs.docker.com/)
  • [Kubernetes Docs](https://kubernetes.io/docs/)
  • Книги:
  • "Docker: Up & Running" by Karl Matthias, Sean P. Kane.
  • "Kubernetes in Action" by Marko Luksa.
  • Онлайн-курси:
  • Docker and Kubernetes: The Complete Guide (Udemy).
  • Certified Kubernetes Administrator (CKA) Prep Course.
  • Спільноти:
  • Reddit: r/docker, r/kubernetes
  • Slack/Discord: Kubernetes Community.

Цей курс забезпечує не лише теоретичне розуміння, але й практичні навички, необхідні для успішної роботи з контейнеризованими застосунками у сучасних DevOps-середовищах.

[file-name 000349_2026-02-25_10-39-47.txt]