Skip to content

📘 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