Назад к блогу
DevOps

Что такое Docker и зачем он нужен — объяснение для начинающих

Когда я впервые услышал слово "Docker", я подумал, что это что-то очень сложное. Какие-то контейнеры, образы, оркестрация… Я был уверен, что это для DevOps-инженеров, а не для обычных разработчиков.

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

Тогда я решил разобраться с Docker. И понял: это не страшно. Более того, это спасло меня от множества проблем. Сейчас я объясню всё простыми словами.

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

Docker — это технология, которая позволяет упаковывать приложения в контейнеры.

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

Docker-контейнер — это такой рюкзак для вашего приложения. В нём есть:

  • Ваш код

    Все файлы приложения

  • Библиотеки и зависимости

    Всё, что нужно для работы

  • Операционная система

    В лёгком варианте

И этот рюкзак работает везде одинаково. На вашем компьютере, на сервере, в облаке — всегда одинаково.

Простыми словами: Docker — это способ упаковать приложение так, чтобы оно работало одинаково на любом компьютере.

Зачем нужен Docker — 5 главных причин

  • Устранение проблемы "у меня работает"

    Контейнер гарантирует одинаковое окружение везде.

  • Изоляция приложений

    Разные версии Python в разных контейнерах не мешают друг другу.

  • Упрощение развёртывания

    Вместо часов настройки — секунды на запуск контейнера.

  • Воспроизводимость

    Dockerfile — как рецепт для воспроизведения окружения.

  • Экономия ресурсов

    Контейнеры очень лёгкие, на одном сервере — десятки штук.

Контейнеры vs виртуальные машины — в чём разница?

🐳 Docker Контейнеры
  • ✅ Очень маленький размер (МБ)
  • ✅ Секунды на запуск
  • ✅ Минимальное использование ресурсов
  • ✅ Процессная изоляция
🖥️ ВМ Виртуальная машина
  • ❌ Большой размер (ГБ)
  • ❌ Минуты на запуск
  • ❌ Высокое использование ресурсов
  • ❌ Полная изоляция со своей ОС
Характеристика Docker ВМ
Размер Очень маленький (МБ) Большой (ГБ)
Скорость запуска Секунды Минуты
Использование ресурсов Минимальное Высокое
Изоляция Процессная Полная (со своей ОС)

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

Как работает Docker — основные понятия

Docker Image (образ)

Шаблон для контейнера. Как класс в программировании. Описывает ОС, зависимости, код, настройки.

Docker Container (контейнер)

Запущенный экземпляр образа. Как объект класса. Можно запускать много контейнеров из одного образа.

Dockerfile

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

Docker Registry

Хранилище образов. Самый известный — Docker Hub. Готовые образы для nginx, postgres, python и др.

Как начать использовать Docker — первые шаги

Я покажу, как запустить свой первый контейнер. Это очень просто.

1

Установите Docker

Скачайте Docker Desktop для Windows или Mac.

2

Проверьте установку

docker --version
3

Запустите первый контейнер

docker run hello-world

Docker скачает образ hello-world и запустит контейнер. Если видите приветствие — всё работает!

4

Запустите веб-сервер

docker run -d -p 8080:80 nginx

Откройте http://localhost:8080 — вы увидите страницу Nginx.

Пример Dockerfile — как упаковать своё приложение

Допустим, у вас есть Python-приложение. Вот как выглядит 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"]

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

docker build -t my-app .
docker run -p 5000:5000 my-app

Всё! Ваше приложение работает в контейнере.

Что такое Docker Compose

Когда у вас несколько контейнеров (веб-приложение, база данных, кэш), запускать их по отдельности неудобно.

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

version: '3'
services:
  web:
    build: .
    ports:
      - "5000:5000"
  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: secret
  redis:
    image: redis:alpine

Запуск всех сервисов:

docker-compose up -d
Ключевые выводы (TL;DR):
  • Docker упаковывает приложения в контейнеры, которые работают одинаково везде.
  • Контейнеры легче и быстрее виртуальных машин.
  • Docker решает проблему "у меня работает, а на сервере нет".
  • Docker Compose упрощает запуск нескольких контейнеров.
  • Docker бесплатный для личного использования.

Часто задаваемые вопросы

Что такое Docker простыми словами?

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

Зачем нужен Docker?

Для устранения проблем с окружением, изоляции приложений, упрощения развёртывания и экономии ресурсов.

В чём отличие Docker от виртуальной машины?

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

Docker бесплатный?

Да, есть бесплатная версия для личного использования и небольших команд.

Что такое Docker Compose?

Инструмент для запуска нескольких контейнеров вместе. Описываются все сервисы в одном файле и запускаются одной командой.

В итоге

Docker — это один из тех инструментов, которые меняют подход к разработке. Я перестал бояться развёртывания, перестал тратить часы на настройку окружения, перестал слышать "у меня не работает".

Если вы разработчик — Docker обязателен к изучению. Начните с малого: установите Docker, запустите несколько контейнеров, попробуйте упаковать своё приложение. Это изменит вашу жизнь.