CohortX
Блог

Docker для начинающих: зачем он нужен

2 августа 2026 г. · 2 мин чтения · Read in English · Антон Молотило

Какую проблему решает

Классическая ситуация: у вас проект работает, у коллеги — нет. Причина в разных версиях языка, библиотек или системы. Разбирательство занимает день.

Контейнер решает это так: вы упаковываете вместе с кодом всё окружение — нужную версию языка, библиотеки, настройки. У любого человека и на любом сервере это запустится одинаково.

Отсюда фраза «у меня работает» перестаёт быть аргументом: если работает в контейнере, работает у всех.

Что такое контейнер простыми словами

Не виртуальная машина. Виртуальная машина — это целый компьютер внутри компьютера, тяжёлый и медленный.

Контейнер — изолированная коробка, которая использует ядро вашей системы, но имеет собственную файловую систему и процессы. Запускается за секунды, весит мало.

Два понятия, которые надо различать:

  • Образ — рецепт и заготовка. Неизменяемый слепок с вашим приложением и окружением.
  • Контейнер — запущенный экземпляр образа. Их может быть много из одного образа.

Первые команды

Скачать готовый образ и запустить:

docker run --rm hello-world

Запустить базу данных, не устанавливая её в систему:

docker run --name pg -e POSTGRES_PASSWORD=secret -p 5432:5432 -d postgres

Разберём: имя контейнера, переменная окружения с паролем, проброс порта наружу, запуск в фоне.

Это, кстати, самый простой способ получить базу для учёбы: не надо ничего ставить и потом чистить.

Посмотреть запущенное:

docker ps

Остановить и удалить:

docker stop pg
docker rm pg

Минимальный файл описания

Файл с инструкциями, как собрать образ вашего проекта. Для приложения на Python примерно так:

FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "main.py"]

По строкам: берём готовый образ с языком, задаём рабочую папку, копируем список зависимостей, ставим их, копируем код, указываем команду запуска.

Порядок строк важен: зависимости копируются и ставятся до копирования кода, чтобы при изменении кода не переустанавливать их заново. Это заметно ускоряет пересборку.

Собрать и запустить:

docker build -t myapp .
docker run --rm -p 8000:8000 myapp

Что не класть в образ

  • Пароли и ключи. Передавайте через переменные окружения.
  • Виртуальное окружение с вашей машины.
  • Папку с историей изменений и служебный мусор — для этого есть файл со списком исключений.

Зачем это новичку

Во-первых, это встречается в вакансиях всё чаще, и умение упаковать своё приложение выделяет среди других кандидатов.

Во-вторых, это удобно самому: базы и вспомогательные службы для учёбы поднимаются одной командой и так же удаляются, не засоряя систему.

В-третьих, проект, упакованный в контейнер, легко развернуть где угодно — и вы не привязаны к одной площадке.

Хватит читать — пора делать

На CohortX можно найти команду под пет-проект и получить тот самый опыт, о котором спрашивают на собеседовании.

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