📝 Docker

Что такое Docker и зачем он нужен

P
Автор
PyLand Team
📅
Опубликовано
08.05.2026
⏱️
Время чтения
2 мин
👁️
Просмотров
322
🌱
Уровень
Начальный

Docker решает одну из самых распространённых проблем в разработке: «У меня работает, а на сервере нет».

Корень проблемы

Когда ты запускаешь код локально, он работает в конкретном окружении: своя версия Python, свои библиотеки, своя ОС. На сервере — другая версия Python, другие версии пакетов, другая ОС. Код «упадёт» даже если ты ничего не сломал.

Классический сценарий: ты написал приложение на Python 3.11, у коллеги стоит Python 3.9, на CI — 3.10, на проде — 3.8. Где-то match не работает, где-то нет нужного пакета, где-то systemd блокирует порт. Каждое окружение — отдельный источник сюрпризов.

Что такое Docker

Docker — это инструмент для запуска приложений в контейнерах. Контейнер содержит всё необходимое: код, runtime, библиотеки, системные зависимости. Одна и та же коробка запускается одинаково везде — на твоём Mac, на сервере коллеги и в облаке.

Аналогия: грузовой контейнер. Всё упаковано внутри. Перевози хоть на корабле, хоть на поезде, хоть на грузовике — содержимое не изменится.

Образ и контейнер

  • Образ (image) — неизменяемый шаблон. Как класс в ООП или установочный диск.
  • Контейнер — запущенный экземпляр образа. Как объект, созданный из класса.

Один образ → много контейнеров. Удалил контейнер — образ остался.

Контейнер vs Виртуальная машина

Виртуальная машина Docker контейнер
Что изолирует Целый компьютер (ядро, память, диск) Только процессы
Размер Гигабайты Мегабайты
Запуск Минуты Секунды
Использует ядро хоста Нет Да

Контейнер не эмулирует железо — он использует ядро хост-системы, изолируя только процессы. Поэтому быстрее и легче.

Кратко о разнице:
- ВМ запускает полноценную ОС со своим ядром — изоляция максимальная, но цена — гигабайты RAM и минуты старта
- Docker использует ядро хоста, изолирует только пространство процессов — легко, быстро, достаточно для большинства задач
- ВМ нужна когда требуется другая ОС (Windows-контейнер на Linux-хосте); Docker — когда нужно изолировать приложение

Docker vs virtualenv

virtualenv изолирует только Python-библиотеки. Docker изолирует всё: версию Python, системные пакеты, порты, файловую систему. Docker работает не только с Python.

Простой Dockerfile

Dockerfile — текстовый файл с инструкциями по сборке образа:

# Берём официальный образ Python
FROM python:3.11-slim

# Рабочая директория внутри контейнера
WORKDIR /app

# Копируем зависимости и устанавливаем
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Копируем весь код
COPY . .

# Команда запуска приложения
CMD ["python", "app.py"]

Собрать образ и запустить контейнер:

# Собрать образ с тегом myapp
docker build -t myapp .

# Запустить контейнер, пробросить порт 8000 хоста → 8000 контейнера
docker run -p 8000:8000 myapp

Флаг -p 8000:8000 означает: трафик на порт 8000 твоей машины перенаправляется в порт 8000 контейнера. Без этого флага приложение работает, но недоступно снаружи контейнера.

Реальный сценарий

Ты разрабатываешь Django-приложение. Без Docker:

  1. Новый разработчик клонирует репо
  2. Устанавливает Python (возможно, не ту версию)
  3. Создаёт virtualenv, ставит зависимости
  4. Устанавливает PostgreSQL, настраивает пользователя и базу
  5. Прописывает переменные окружения
  6. Где-то на шаге 3–4 что-то идёт не так

С Docker:

git clone https://github.com/example/myapp
docker compose up

Готово. Та же версия Python, та же PostgreSQL, те же переменные — у всех в команде.

Что даёт Docker разработчику

  • Одинаковое окружение у всей команды
  • Мгновенный запуск баз данных и сервисов
  • Безопасные эксперименты — сломал контейнер, удалил, создал новый
  • Простой деплой: собрал образ, отправил, запустил
  • Новый участник команды onboarding сводится к одной команде

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

Docker Compose: многоконтейнерные приложения

Docker Compose — инструмент для запуска нескольких связанных контейнеров как единого приложения. Конфигурация описывается в...

📅 08.05.2026 👁️ 325
📝

Dockerfile: создаём свои образы

Dockerfile — текстовый файл с инструкциями для сборки образа. Каждая инструкция — слой образа.

📅 08.05.2026 👁️ 339
📝

Multi-stage builds: уменьшаем Docker-образ

Большой образ — это медленная загрузка, больше места на диске и большая поверхность атаки. Multi-stage...

📅 30.06.2026 👁️ 318
🎓 Продолжить обучение

В каких курсах используется этот материал

Перейдите к курсу, чтобы закрепить материал на практике.

Docker: От хаоса к контейнерам Открыть программу курса