Containerization
Изолированные процессы со своей файловой системой, сетью и лимитами ресурсов на базе namespaces и cgroups.
Контейнеризация · DevOps · Cloud
Упаковывайте приложения вместе со всеми зависимостями, разворачивайте их за секунды и масштабируйте одинаково на ноутбуке разработчика, в CI и в production.
Основы
Docker — это набор инструментов, который позволяет запускать приложения в контейнерах: лёгких изолированных средах, где уже есть всё необходимое — код, среда выполнения, системные библиотеки и настройки.
Представьте морской контейнер: неважно, что внутри и на каком судне его везут — у него стандартный размер и крепления. Так и с Docker: контейнер одинаково запускается на ноутбуке, тестовом сервере и в облаке. Фраза «а у меня работает» перестаёт быть проблемой.
В отличие от виртуальной машины, контейнер не содержит собственного ядра ОС — он использует ядро хоста. Поэтому контейнеры стартуют за доли секунды и занимают мегабайты, а не гигабайты.
Экосистема
Всё, что нужно, чтобы пройти путь от первой строки Dockerfile до работающего сервиса.
Изолированные процессы со своей файловой системой, сетью и лимитами ресурсов на базе namespaces и cgroups.
Неизменяемые слоистые образы: общие слои кэшируются и переиспользуются, сборка и загрузка проходят быстрее.
Описание многосервисного приложения в одном YAML-файле и запуск всего стека одной командой.
Bridge, host и overlay-сети, встроенный DNS по именам сервисов и публикация портов наружу.
Постоянное хранение данных вне жизненного цикла контейнера: базы данных, загрузки, кэши.
Сборка и тестирование в одинаковых контейнерах в GitHub Actions, GitLab CI, Jenkins и других системах.
Хранение и распространение образов через Docker Hub или собственный приватный реестр.
Healthcheck, политики перезапуска, лимиты ресурсов и запуск в оркестраторах — Swarm или Kubernetes.
Зачем это нужно
Каждый сервис получает свои зависимости и версии библиотек. Обновление одного приложения не ломает другое, а ограничения CPU и памяти защищают соседей.
Образ, собранный один раз, запускается на любой машине с Docker: Linux, Windows, macOS, облачные платформы и on-premise.
Контейнеры стартуют за секунды. Новую версию можно выкатить и откатить, просто сменив тег образа.
Dockerfile и Compose-файл описывают окружение как код: разработка, тесты и production собираются из одних и тех же инструкций.
Жизненный цикл
От исходного кода до работающего сервиса — пять шагов.
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["python", "app.py"]
services:
web:
build: .
ports: ["8000:8000"]
depends_on: [db]
db:
image: postgres:16
volumes: ["pgdata:/var/lib/postgresql/data"]
volumes:
pgdata:
Шпаргалка
Базовые команды, которые пригодятся каждый день. Нажмите на карточку, чтобы скопировать команду.
docker --versionВерсия установленного Docker
docker psСписок запущенных контейнеров (-a — всех)
docker imagesЛокальные образы и их размер
docker compose up -dПоднять все сервисы из compose.yaml в фоне
docker logs -f container_nameСледить за логами контейнера в реальном времени
docker build -t app:1.0 .Собрать образ из Dockerfile в текущем каталоге