📘 Docker
1. Общие сведения
Наименование:
Docker
Описание:
Docker — это платформа с открытым исходным кодом, предназначенная для разработки, доставки и запуска приложений в контейнерах. Контейнеры позволяют упаковать приложение вместе со всей необходимой средой выполнения, обеспечивая стабильность и переносимость между различными системами.
Тип системы:
Платформа виртуализации / Инструмент контейнеризации
Класс: DevOps, CI/CD, Containerization
Разработчик:
Solomon Hykes (основатель), компания Docker Inc.
Год выпуска:
2013 год
Лицензия:
Open Source (Community Edition) + Enterprise Edition (платная)
Сайт: https://www.docker.com
2. Основные компоненты Docker
Компонент | Описание |
---|---|
Docker Engine | Ядро Docker, отвечающее за создание и запуск контейнеров |
Docker CLI | Интерфейс командной строки для управления Docker |
Docker Daemon (dockerd) | Фоновый процесс, управляющий образами, контейнерами, томами и сетями |
Docker Image | Шаблон (read-only) для создания контейнеров |
Docker Container | Запущенный экземпляр образа |
Dockerfile | Текстовый файл с инструкциями для сборки образа |
Docker Compose | Инструмент для определения и запуска многоконтейнерных приложений |
Docker Hub | Облачный реестр публичных и приватных образов |
3. Основные понятия
Понятие | Описание |
---|---|
Контейнеризация | Виртуализация на уровне операционной системы, позволяющая запускать приложения в изолированных пространствах (контейнерах) |
Контейнер vs Виртуальная машина | В отличие от VM, контейнер использует ядро хост-системы и не требует отдельной ОС |
Immutable Infrastructure | Подход, при котором контейнеры создаются заново при каждом обновлении, а не изменяются динамически |
Orchestration | Управление множеством контейнеров (например, через Kubernetes или Docker Swarm) |
4. Пример использования
Пример Dockerfile:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]
Пример docker-compose.yml:
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/app
Основные команды:
docker build -t my-app .
docker run -p 5000:5000 my-app
docker ps
docker-compose up
5. Преимущества использования Docker
✅ Изоляция окружения: каждое приложение работает в своём контейнере
✅ Единообразие сред: один и тот же контейнер работает локально, на тестовом и боевом сервере
✅ Упрощение деплоя: легко упаковать и отправить приложение в production
✅ Масштабируемость: можно быстро запустить несколько экземпляров сервиса
✅ Быстрый старт/останов: контейнеры стартуют быстрее виртуальных машин
✅ Поддержка микросервисных архитектур: идеален для работы с распределёнными системами
✅ Интеграция с CI/CD: легко внедряется в pipeline автоматизации
6. Использование в проектах
Этап | Возможности |
---|---|
Разработка | Локальное тестирование приложений в условиях, близких к боевой |
Тестирование | Быстрая проверка приложений в разных версиях зависимостей |
Деплой | Автоматический запуск приложений после сборки |
CI/CD | Использование контейнеров для тестирования и развёртывания |
Продуктовые среды | Масштабируемый запуск приложений в продакшене (с оркестраторами) |
Обучение | Быстрое разворачивание окружений для обучения или демонстраций |
7. Альтернативы Docker
Инструмент | Особенности |
---|---|
Podman | Совместим с Docker CLI, но без демона и root-привилегий |
LXC / LXD | Более низкоуровневая контейнеризация, ближе к виртуальным машинам |
containerd | Низкоуровневый контейнерный движок, используется Docker под капотом |
Kubernetes (K8s) | Оркестратор контейнеров для масштабных решений |
Buildah | Для сборки OCI-совместимых образов без Dockerfile |
8. Интеграции
Интеграция | Описание |
---|---|
Kubernetes | Управление контейнерами в кластере |
Jenkins / GitLab CI / GitHub Actions | Интеграция в pipeline CI/CD |
Docker Hub / GitLab Container Registry / AWS ECR | Хранение и распространение образов |
Terraform / Ansible | Автоматизация развёртывания инфраструктуры с Docker |
Portainer / Rancher | Веб-интерфейсы для управления Docker |