Docker с нуля: Практический путь к контейнеризации

Освойте современный стандарт развертывания приложений от основ до продвинутых техник

О курсе

Этот курс научит вас уверенно использовать Docker для создания, развертывания и управления приложениями. Мы начнем с основ контейнеризации и пройдем путь от запуска первого контейнера до создания сложных многоконтейнерных приложений с помощью Docker Compose. Каждый раздел включает практические задания, которые закрепят полученные знания и подготовят вас к реальной работе в среде DevOps.

Целевая аудитория Начинающие и middle-разработчики, системные администраторы
Формат 5 разделов, видеолекции, практические задания
Итог Навыки контейнеризации и развертывания приложений с Docker
01

Погружение в контейнеризацию. Настройка рабочего места

Мы начнем с основ — разберем эволюцию виртуализации и то, как контейнеризация изменила подход к разработке и доставке ПО. Вы поймете, почему фраза "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.
02

Мастерство командной строки. Управление образами и контейнерами

Этот раздел — ваш практический инструментарий. Мы погрузимся в командную строку Docker и изучим все необходимые команды для повседневной работы. Вы научитесь запускать готовые приложения из официального репозитория Docker Hub, настраивать их и диагностировать возможные проблемы.

Ключевые темы

  • Работа с Docker Hub: поиск, скачивание и публикация образов
  • Жизненный цикл контейнера: создание, запуск, остановка, удаление
  • Команды docker run: параметры и флаги для различных сценариев
  • Проброс портов: связь между контейнерами и хост-системой
  • Подключение к работающему контейнеру: docker exec и docker attach
  • Просмотр логов контейнеров и отладка проблем
  • Управление данными внутри контейнеров: временные файлы и каталоги
Практическая работа: Запуск различных готовых контейнеров из Docker Hub: веб-сервер Nginx, база данных PostgreSQL, Redis. Настройка проброса портов для доступа к сервисам. Подключение к контейнерам через bash/sh для изучения их внутреннего устройства. Просмотр логов работающих контейнеров и анализ их состояния с помощью docker ps и docker inspect.
03

Создание собственных контейнеров. Написание Dockerfile

Переходим от использования готовых решений к созданию своих. Вы научитесь "упаковывать" ваше приложение в переносимый и масштабируемый Docker-образ. Мы детально разберем каждую инструкцию в Dockerfile, от выбора базового образа до команды запуска.

Ключевые темы

  • Синтаксис Dockerfile: основные инструкции и их назначение
  • Выбор базового образа: FROM и работа с официальными образами
  • Копирование файлов в образ: COPY и ADD
  • Выполнение команд при сборке: RUN и установка зависимостей
  • Настройка рабочей директории: WORKDIR
  • Определение команды запуска: CMD и ENTRYPOINT
  • Кеширование слоев и оптимизация времени сборки образов
Практическая работа: Создание Dockerfile для простого веб-приложения на Node.js или Python Flask. Написание инструкций для установки зависимостей, копирования исходного кода и запуска приложения. Сборка образа с помощью docker build и запуск контейнера из созданного образа. Эксперименты с различными базовыми образами и оптимизация размера финального образа.
04

Оркестрация локальных проектов. Введение в Docker Compose

Современные приложения состоят из множества взаимодействующих сервисов. Управлять ими вручную — сложно и неудобно. В этом разделе вы познакомитесь с 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. Работа с логами нескольких сервисов одновременно и управление жизненным циклом приложения.
05

Продвинутые техники и взгляд в будущее. Лучшие практики

В финальном разделе мы перейдем от "как сделать" к "как сделать правильно". Вы разберетесь, как сохранять данные баз данных и других сервисов между перезапусками контейнеров, а также как устроено сетевое взаимодействие. Мы рассмотрим техники оптимизации образов, включая многостадийные сборки.

Ключевые темы

  • Docker Volumes: типы томов и управление постоянными данными
  • Сети Docker: bridge, host, overlay и пользовательские сети
  • Многостадийные сборки: уменьшение размера образов
  • Лучшие практики написания Dockerfile: порядок инструкций, минимизация слоев
  • Безопасность контейнеров: непривилегированные пользователи, сканирование уязвимостей
  • Docker в CI/CD: автоматизация сборки и развертывания
  • Следующие шаги: Docker Swarm, Kubernetes, мониторинг и логирование
Практическая работа: Создание Docker Volume для сохранения данных базы данных между перезапусками. Настройка пользовательской сети для изоляции сервисов. Написание многостадийного Dockerfile для минимизации размера образа приложения. Применение лучших практик безопасности: запуск контейнеров от непривилегированного пользователя, ограничение ресурсов. Подготовка проекта к production-развертыванию.

Итоговый проект

По завершении курса вы создадите полноценное многоконтейнерное приложение с использованием всех изученных техник. Проект будет включать веб-приложение, базу данных, систему кеширования и reverse-proxy. Вы напишете оптимизированные Dockerfile, настроите docker-compose.yml с правильной архитектурой сетей и volumes, примените лучшие практики безопасности и подготовите проект к развертыванию. Этот проект станет отличным дополнением к вашему портфолио и продемонстрирует готовность работать с контейнерными технологиями на профессиональном уровне.

Вернуться на главную