Phone icon Связаться с нами

DevOps и облака

Что такое контейнер?

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

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

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

Где применяется

Контейнер стал стандартным способом поставки приложений. В контейнерах разворачивают веб-сервисы и API, запускают сборку кода, поднимают базы данных для тестов, упаковывают аналитические инструменты. Почти все облачные платформы — от простого хостинга до Kubernetes — принимают приложение именно в виде контейнера.

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

Пример

Приложению нужна старая версия библиотеки, а на сервере установлена новая, от которой зависит другой сервис. В контейнерах такого конфликта нет: у каждого своя среда, и он не мешает соседям.

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

docker ps
docker logs -f pg
Запуск базы данных в контейнере: одна команда вместо установки и настройки в системе.

Контейнер и виртуальная машина: разница

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

Частые вопросы

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

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

Сохраняются ли данные в контейнере после перезапуска?

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

Сколько контейнеров можно запустить на одном сервере?

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

Безопасны ли контейнеры?

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

Обучение DevOps в OWU

Освойте профессию DevOps-инженера на практических курсах с менторами и реальными проектами.

Выбрать курс