Что такое Docker: простыми словами, как работает и зачем нужен - Компьюти
Logo КОМПЬЮТИ

Что такое Docker: простыми словами, как работает и зачем нужен

Время на прочтение: 3 мин.

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

Главная идея Docker проста: приложение должно работать одинаково на компьютере разработчика, тестовом сервере и в production. Контейнер помогает убрать классическую проблему «у меня на компьютере все работает».

Как работает Docker

Docker использует образы и контейнеры.

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

Docker container, или контейнер, — запущенный экземпляр образа.

Например, можно взять официальный образ Nginx:

docker pull nginx

После этого запустить контейнер:

docker run -d --name web -p 8080:80 nginx

Теперь Nginx работает внутри контейнера, а сайт доступен на порту 8080 хост-системы.

Проверить контейнеры можно командой:

docker ps

Остановить контейнер:

docker stop web

Удалить:

docker rm web

Чем контейнер отличается от виртуальной машины

Контейнер и виртуальная машина решают похожую задачу — изоляцию приложений, но работают по-разному.

Виртуальная машина обычно содержит полноценную гостевую операционную систему. Контейнер использует ядро операционной системы хоста и изолирует процессы, файловую систему, сеть и другие ресурсы.

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

Это не означает, что Docker полностью заменяет виртуализацию. Виртуальные машины и контейнеры часто используются вместе.

Основные понятия Docker

Чтобы уверенно работать с Docker, достаточно сначала разобраться с несколькими понятиями.

Image

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

Посмотреть локальные образы:

docker images

Загрузить образ:

docker pull redis

Container

Контейнер создается из образа:

docker run redis

Один образ может использоваться для запуска множества контейнеров.

Dockerfile

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

Пример:

FROM nginx:alpine

COPY ./site /usr/share/nginx/html

Собрать образ:

docker build -t my-site .

Подробнее о создании образов рассказываем в статье «Dockerfile: как создать собственный Docker-образ».

Volume

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

Например:

docker volume create app-data

Подробнее о постоянном хранении данных — в статье «Docker volumes: что это такое и как использовать».

Network

Контейнеры могут взаимодействовать друг с другом через Docker-сети.

Например, приложение может подключаться к PostgreSQL по имени контейнера или сервиса:

postgres:5432

Подробнее — в статье «Docker networks: сети контейнеров и связь между сервисами».

Docker Compose

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

Например, веб-приложению могут понадобиться:

  • Nginx;
  • PHP;
  • PostgreSQL;
  • Redis.

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

docker compose up -d

Подробнее о Compose — в статье «Docker Compose: что это и как использовать».

Где используется Docker

Docker применяется в разработке, тестировании и развертывании приложений.

Типичные сценарии:

  • локальная разработка;
  • запуск тестовых окружений;
  • CI/CD;
  • размещение веб-сайтов;
  • запуск баз данных;
  • микросервисная архитектура;
  • изоляция приложений;
  • автоматизация серверной инфраструктуры.

Например, разработчику не обязательно устанавливать PostgreSQL непосредственно в операционную систему. Можно запустить базу в контейнере и удалить ее после завершения работы.

Преимущества Docker

Переносимость

Один и тот же образ можно использовать в разных окружениях.

Изоляция

Приложения работают в отдельных контейнерах и меньше влияют друг на друга.

Быстрый запуск

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

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

Инфраструктуру можно описать в Dockerfile и Compose-файлах и затем воспроизвести на другом сервере.

Удобное масштабирование

При необходимости можно запустить несколько экземпляров сервиса.

Недостатки Docker

Docker не является универсальным решением.

Нужно учитывать:

  • контейнеры требуют грамотной настройки безопасности;
  • данные нельзя бездумно хранить внутри контейнера;
  • сетевую конфигурацию необходимо понимать;
  • production-среда требует мониторинга и резервного копирования;
  • большое количество контейнеров усложняет управление.

Для одного сервера часто достаточно Docker Compose. Для более сложной инфраструктуры можно рассматривать Docker Swarm или другие системы оркестрации.

О Docker Swarm рассказываем в статье «Docker Swarm: что это и когда нужен».

Docker или виртуальная машина

Упрощенно:

DockerВиртуальная машина
КонтейнерыВиртуальные машины
Меньше накладных расходовБольше накладных расходов
Быстрый запускБолее медленный запуск
Общий kernel хостаОтдельная гостевая ОС
Удобен для приложенийУдобна для полной изоляции ОС

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

Итог

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

Для начала достаточно освоить базовые команды:

docker pull
docker run
docker ps
docker stop
docker rm
docker images
docker logs
docker exec

Следующий шаг — установка Docker на компьютер или сервер. После этого можно перейти к Docker Compose, Dockerfile, volumes и networks.

Читайте также:


Читайте также:

Приглашаем поучаствовать в обсуждении статьи:

Комментариев 0