Огляд курсу:
Цей курс призначений для розробників, інженерів 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 runvskubectl 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]