О курсе
Этот курс научит вас уверенно использовать Docker для создания, развертывания и управления приложениями. Мы начнем с основ контейнеризации и пройдем путь от запуска первого контейнера до создания сложных многоконтейнерных приложений с помощью Docker Compose. Каждый раздел включает практические задания, которые закрепят полученные знания и подготовят вас к реальной работе в среде DevOps.
Целевая аудитория
Начинающие и middle-разработчики, системные администраторы
Формат
5 разделов, видеолекции, практические задания
Итог
Навыки контейнеризации и развертывания приложений с Docker
Мы начнем с основ — разберем эволюцию виртуализации и то, как контейнеризация изменила подход к разработке и доставке ПО. Вы поймете, почему фраза "Works on my machine" уходит в прошлое. После теоретической базы мы перейдем к практике: установим Docker, запустим классический hello-world и разберем по шагам, что произошло за кулисами.
Ключевые темы
- Эволюция виртуализации: от физических серверов к контейнерам
- Отличия контейнеров от виртуальных машин: архитектурные преимущества
- Экосистема Docker: Docker Engine, Docker Hub, Docker Desktop
- Установка Docker на различных операционных системах
- Запуск первого контейнера и понимание базового жизненного цикла
- Архитектура Docker: клиент-серверная модель, демон, образы и контейнеры
- Основные концепции: изоляция процессов, namespaces и cgroups
Практическая работа: Установка Docker на вашу операционную систему (Windows, macOS или Linux). Проверка корректности установки с помощью команд docker version и docker info. Запуск контейнера hello-world и анализ происходящих процессов. Изучение базовых команд для просмотра информации о системе Docker.
Этот раздел — ваш практический инструментарий. Мы погрузимся в командную строку Docker и изучим все необходимые команды для повседневной работы. Вы научитесь запускать готовые приложения из официального репозитория Docker Hub, настраивать их и диагностировать возможные проблемы.
Ключевые темы
- Работа с Docker Hub: поиск, скачивание и публикация образов
- Жизненный цикл контейнера: создание, запуск, остановка, удаление
- Команды docker run: параметры и флаги для различных сценариев
- Проброс портов: связь между контейнерами и хост-системой
- Подключение к работающему контейнеру: docker exec и docker attach
- Просмотр логов контейнеров и отладка проблем
- Управление данными внутри контейнеров: временные файлы и каталоги
Практическая работа: Запуск различных готовых контейнеров из Docker Hub: веб-сервер Nginx, база данных PostgreSQL, Redis. Настройка проброса портов для доступа к сервисам. Подключение к контейнерам через bash/sh для изучения их внутреннего устройства. Просмотр логов работающих контейнеров и анализ их состояния с помощью docker ps и docker inspect.
Переходим от использования готовых решений к созданию своих. Вы научитесь "упаковывать" ваше приложение в переносимый и масштабируемый Docker-образ. Мы детально разберем каждую инструкцию в Dockerfile, от выбора базового образа до команды запуска.
Ключевые темы
- Синтаксис Dockerfile: основные инструкции и их назначение
- Выбор базового образа: FROM и работа с официальными образами
- Копирование файлов в образ: COPY и ADD
- Выполнение команд при сборке: RUN и установка зависимостей
- Настройка рабочей директории: WORKDIR
- Определение команды запуска: CMD и ENTRYPOINT
- Кеширование слоев и оптимизация времени сборки образов
Практическая работа: Создание Dockerfile для простого веб-приложения на Node.js или Python Flask. Написание инструкций для установки зависимостей, копирования исходного кода и запуска приложения. Сборка образа с помощью docker build и запуск контейнера из созданного образа. Эксперименты с различными базовыми образами и оптимизация размера финального образа.
Современные приложения состоят из множества взаимодействующих сервисов. Управлять ими вручную — сложно и неудобно. В этом разделе вы познакомитесь с Docker Compose — мощным инструментом для определения и запуска многоконтейнерных приложений. Вы научитесь описывать всю инфраструктуру вашего проекта в одном читаемом YAML-файле.
Ключевые темы
- Необходимость оркестрации для многоконтейнерных приложений
- Синтаксис docker-compose.yml: версии и основные секции
- Определение сервисов: образы, сборка, порты, переменные окружения
- Связывание контейнеров: networks и зависимости между сервисами
- Управление данными в Compose: volumes для постоянного хранения
- Команды Docker Compose: up, down, logs, ps
- Масштабирование сервисов и управление несколькими экземплярами
Практическая работа: Создание файла docker-compose.yml для многоконтейнерного приложения: веб-сервер (Node.js/Python), база данных (PostgreSQL/MySQL) и кеш (Redis). Настройка связей между контейнерами, проброс портов и переменных окружения. Запуск всего стека командой docker-compose up. Работа с логами нескольких сервисов одновременно и управление жизненным циклом приложения.
В финальном разделе мы перейдем от "как сделать" к "как сделать правильно". Вы разберетесь, как сохранять данные баз данных и других сервисов между перезапусками контейнеров, а также как устроено сетевое взаимодействие. Мы рассмотрим техники оптимизации образов, включая многостадийные сборки.
Ключевые темы
- Docker Volumes: типы томов и управление постоянными данными
- Сети Docker: bridge, host, overlay и пользовательские сети
- Многостадийные сборки: уменьшение размера образов
- Лучшие практики написания Dockerfile: порядок инструкций, минимизация слоев
- Безопасность контейнеров: непривилегированные пользователи, сканирование уязвимостей
- Docker в CI/CD: автоматизация сборки и развертывания
- Следующие шаги: Docker Swarm, Kubernetes, мониторинг и логирование
Практическая работа: Создание Docker Volume для сохранения данных базы данных между перезапусками. Настройка пользовательской сети для изоляции сервисов. Написание многостадийного Dockerfile для минимизации размера образа приложения. Применение лучших практик безопасности: запуск контейнеров от непривилегированного пользователя, ограничение ресурсов. Подготовка проекта к production-развертыванию.
Итоговый проект
По завершении курса вы создадите полноценное многоконтейнерное приложение с использованием всех изученных техник. Проект будет включать веб-приложение, базу данных, систему кеширования и reverse-proxy. Вы напишете оптимизированные Dockerfile, настроите docker-compose.yml с правильной архитектурой сетей и volumes, примените лучшие практики безопасности и подготовите проект к развертыванию. Этот проект станет отличным дополнением к вашему портфолио и продемонстрирует готовность работать с контейнерными технологиями на профессиональном уровне.
Вернуться на главную