>

Что такое Docker и зачем он нужен: полный гайд по контейнеризации в РЕД ОС

30 июля 2026 г.

16 минут

Вконтакте Телеграм Одноклассники

Рассказываем, что такое Docker, как он работает и зачем нужен в гайде по контейнеризации в экосистеме РЕД ОС.

Что такое Docker?

Начнём чуть издалека, с контейнеризации, на базе которой работает технология Docker.

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

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

Сравнение с виртуальными машинами

«Подождите, но если контейнеризация — это метод виртуализации, то в чём разница между контейнерами и виртуальными машинами?» Давайте разбираться:

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

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

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

Docker в РЕД ОС

Операционная система РЕД ОС полностью совместима с Docker и поддерживает контейнеризацию на уровне ядра. Более того, пользователям доступны сертифицированные средства контейнеризации и оркестрации для построения микросервисной архитектуры на объектах КИИ — они входят в состав Сертифицированной редакции РЕД ОС 8 (сертификат ФСТЭК России № 4060 от 12.01.2019). Компоненты: docker 28.1, kubernetes 1.32 с рантаймом containerd 1.7, — прошли испытания по «Требованиям по безопасности информации к средствам контейнеризации» (Приказ ФСТЭК России от 04 июля 2022 г. №118). Средства контейнеризации также входят в состав серверной лицензии РЕД ОС.

Kubernetes поставляется на диске РЕД ОС 8 с набором образов контейнеров k8s для развертывания кластера в закрытом контуре. Команда разработки постоянно совершенствует продукт: по сравнению с РЕД ОС 7.3, в РЕД ОС 8 был оптимизирован размер образов контейнеров кластера k8s. Объём образов сократился вдвое за счёт меньшего числа пакетов и исполняемых файлов, что также снизило поверхность атаки и повысило безопасность контейнеров.

Новые версии образов контейнеров публикуются в реестре Docker-образов РЕД ОС еженедельно, получая все необходимые обновления безопасности. Политика сопровождения версий Kubernetes в РЕД ОС 8 доступна на нашем сайте. 

Теперь, когда мы рассмотрели, что такое Docker, разберём его архитектуру. Docker работает по клиент-серверной модели: демон dockerd управляет контейнерами, а клиент Docker CLI отправляет ему команды. Познакомимся с ними поближе.

Что такое dockerd?

Dockerd — это демон (фоновый процесс), который является «сердцем» Docker. Dockerd управляет контейнерами на высоком уровне (API, образы, сети, тома), а непосредственное создание и запуск процессов делегирует рантайму — containerd, который в свою очередь использует runc для работы с ядром Linux. Dockerd постоянно запущен и принимает команды от Docker CLI через Unix-сокет /var/run/docker.sock. 

Команда systemctl status docker покажет состояние службы. По умолчанию доступ к dockerd имеет только суперпользователь.

Docker CLI

Docker CLI — это интерфейс командной строки, через который пользователь взаимодействует с dockerd. Основные команды Docker CLI:

Команда Задача
docker pull Сохранение образов контейнеров из реестров в локальную систему
docker rmi Удаление одного или более образов с хост-узла (по его идентификатору, тегу или дайджесту)
docker run -d --name my-container my-image Запуск контейнера
(опция -d запустит контейнер в фоновом режиме, а ключ --name позволяет задать пользовательское имя для контейнера вместо автоматически генерируемого)
docker ps Показать список запущенных контейнеров
docker build Сборка образа из Dockerfile*
docker images Показать список локальных образов
docker stop my-container Остановка контейнера
docker rm my-container Удаление контейнера

С полным списком команд можно ознакомиться в Базе Знаний РЕД ОС >>

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

Как установить Docker в РЕД ОС

Для установки средства контейнеризации Docker необходимо выполнить команду (потребуются права администратора):

bash

dnf install docker-ce docker-ce-cli

Затем необходимо запустить сервис контейнеризации Docker и добавить его в автозагрузку:

bash

systemctl enable docker --now

Важно убедиться, что сервис запущен, проверив статус службы:

bash

systemctl status docker

В статусе должно быть отображено active (running).

Для получения информации об установленном Docker можно выполнить команду:

bash

docker info

При корректной настройке будет получен соответствующий ответ от сервиса. 

Чтобы разрешить пользователю управлять Docker через CLI, его нужно добавить в группу docker:

bash

usermod -aG docker <имя_пользователя>

и перезагрузить сеанс.

Что такое образ и контейнер?

Образ (Image) — это статический «шаблон» для создания Docker-контейнеров. Он содержит все необходимые компоненты и зависимости для запуска приложения. Образы неизменяемы — если нужно внести изменения, создаётся новый образ на основе изменяемого.

Реестр dokcer-образов (реестр) — это специализированное хранилице docker-образов, которое может распологаться как на удалённом сервере, так и на локальном компьютере пользователя.

Реестр образов от РЕД СОФТ — registry.red-soft.ru — содержит образы контейнеров, собранные на основе стандартной и сертифицированной редакций РЕД ОС версии 7.3 и 8.

Контейнер (Container) — это экземпляр образа. Его можно сравнить с объектом, созданным по чертежу: образ — это чертёж, контейнер — это готовый объект. Из одного образа можно создать сколько угодно контейнеров.


В чём разница образа и контейнера в Docker? Приведём аналогию

Лучший способ запомнить разницу — сравнить образ и контейнер с чертежом и готовым домом:

Критерий Образ (Image) Контейнер (Container)
Что это Чертёж дома Построенный дом
Состояние Статичный, неизменяемый Живой, работающий
Изменения Невозможны — создаётся новый образ Возможны, но временные
Количество Один шаблон Сколько угодно экземпляров
Хранение На диске или в реестре На диске (пока существует) и в памяти (как работающий процесс)

Рассмотрим работу с образами и контейнерами в РЕД ОС. Сначала загрузим образ Firebird 5 из реестра:

bash

docker pull registry.red-soft.ru/ubi8/firebird-5

Образ — это статичный шаблон. Он хранится на диске и не меняется. Теперь создадим из него контейнер — запущенный экземпляр:

bash

docker run -d --name my-db -p 3050:3050 registry.red-soft.ru/ubi8/firebird-5

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

Контейнер my-db теперь работает — это живой процесс в памяти. Проверить можно командой:

bash

docker ps

Образ контейнера хранится на диске или в реестре, процесс контейнера — также на диске (пока существует) и в памяти (как работающий процесс со своим слоем записи). Из одного образа можно создать сколько угодно контейнеров — как по одному чертежу дома построить целый квартал.

Создадим три контейнера Firebird 5 из одного образа:

bash

docker run -d --name db-prod   -p 3051:3050 registry.red-soft.ru/ubi8/firebird-5
docker run -d --name db-test   -p 3052:3050 registry.red-soft.ru/ubi8/firebird-5
docker run -d --name db-dev   -p 3053:3050 registry.red-soft.ru/ubi8/firebird-5

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

Docker для разработки

Контейнеризация перевернула процесс разработки ПО, сделав его быстрым и предсказуемым. Разберём самые популярные сценарии.

Проблема несовместимости версий

Классическая проблема разработки: на одной машине всё работает, ставишь на новое устройство — и приложение превращается в «тыкву». С Docker эта проблема исчезает: всё окружение упаковано в контейнер. Неважно, какая операционная система на новом устройстве — РЕД ОС, Ubuntu или macOS — контейнер будет работать одинаково.

Например, вам нужно развернуть приложение на Python 3.11, а на сервере РЕД ОС установлен Python 3.8. Вместо того, чтобы менять версию операционной системы, достаточно создать Dockerfile с нужной версией Python и запустить контейнер.

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

На одной машине с РЕД ОС можно запустить несколько контейнеров с разными версиями баз данных, языков программирования или библиотек. Например, на сервере работает Python-приложение А, которому нужна библиотека версии 1.0, и приложение Б, которой нужна та же библиотека, но версии 2.0. Каждое приложение живёт в своей изолированной среде и не пересекается с остальными.

Также изоляция в целом повышает безопасность работы в инфраструктуре:

  • Изоляция процессов (PID namespace): процессы внутри контейнера видят только себя. Контейнер не знает о других контейнерах и процессах хоста и не может с ними взаимодействовать.

  • Изоляция пользователей (user namespaces): процесс в контейнере может работать от имени root внутри, но снаружи это обычный непривилегированный процесс хоста.

  • Ограничение ресурсов (cgroups): если приложение в контейнере утечкой памяти съест всё доступное ОЗУ, оно сломает только себя, не всю систему.

CI/CD и автоматизация сборки

CI/CD автоматизирует процесс сборки. Сервер сборки (GitLab CI, Jenkins, GitHub Actions) собирает приложение, запускает тесты, создаёт docker-образы и разворачивает его на сервере.

Например, команда разрабатывает проект на Java. При каждом коммите в Git-репозиторий CI/CD-система автоматически (при условии существования пайплайна): собирает проект в контейнере, запускает юнит-тесты, проверяет код, создаёт Docker-образ и отправляет его в реестр. Всё это происходит без участия разработчика — он может сосредоточиться на коде.

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

Тестирование в изолированных средах

Тестирование — ещё одна область, где может пригодиться Docker. Каждый тест-запуск можно осуществлять в чистом контейнере, который уничтожается после завершения.

Допустим, вам нужно проверить, как приложение работает с Firebird SQL 3, 4 и 5. Без Docker потребовалось бы устанавливать все версии на одну машину или настраивать несколько виртуальных машин. С Docker достаточно запустить три контейнера с разными версиями баз данных и провести тесты параллельно.


Docker для бизнеса: экономия и масштабирование

Контейнеризация уменьшает затраты на инфраструктуру и повышает надёжность систем.

Экономия ресурсов инфраструктуры

Контейнеры занимают в среднем в 10-100 раз меньше места, чем виртуальные машины. На одном сервере можно запустить сотни контейнеров вместо десятка виртуальных машин. Это позволяет значительно сэкономить на железе и лицензиях.

Например, компания с 10 сервисами и тремя средами, такими как dev, test и prod использовала 30 виртуальных машин. Переход на Docker позволил разместить все сервисы на 5 виртуальных машинах и сократить ежемесячные расходы на облачную инфраструктуру на 80%. При этом развертывание новой тестовой среды ускорилось с 15 минут до 15 секунд, а разработчики перестали ждать очереди на тестовый стенд.

Микросервисная архитектура

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

Например, интернет-магазин может состоять из следующих микросервисов: сервис авторизации (обрабатывает вход пользователей), сервис каталога (управление товарами), сервис заказов (обработка покупок) и сервис уведомлений (email, SMS). Каждый из них — отдельный контейнер.

Если сервис уведомлений перегружается, его можно масштабировать отдельно, не трогая остальные. А если нужно обновить сервис каталога, достаточно пересобрать его Docker-образ и заменить контейнер — остальные сервисы продолжат работать без перерывов.

Масштабирование и отказоустойчивость

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

Например, интернет-магазин во время распродажи испытывает всплеск трафика в 10 раз. С Docker Swarm или Kubernetes в РЕД ОС можно автоматически добавить 5 новых контейнеров с бэкендом, а после акции — убрать.

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

Docker Swarm — это «родная» оркестрация Docker, которая напрямую понимает формат docker-compose.yml. Файл Compose можно практически без изменений деплоить в Swarm-кластер через docker stack deploy.

Docker Compose — расширение для Docker и самый простой и легковесный инструмент для базового уровня оркестрации. Он использует декларативный подход (создаётся YAML-файл с описанием желаемого состояния контейнеров) и управляет жизненным циклом связанных контейнеров.

Однако за стандарт индустрии принята оркестрация Kubernetes — платформа, которая обеспечивает операционную устойчивость распределённых приложений в гетерогенных вычислительных средах, реализует спецификацию Container Runtime Interface (CRI) и работает совместно с контейнерными средами исполнения (Docker, containerd, CRI-O).

Kubernetes лучше подходит для работы под нагрузкой, справляется со сложной маршрутизацией трафика. Если Docker Compose удобен в качестве инструмента оркестрации для одного хоста, то Kubernetes «заточен» для работы с несколькими устройствами или целыми дата-центрами. В Базе Знаний РЕД ОС есть подробные инструкции по установке Kubernetes с использованием контейнерного движка containerd.

Обширной теме Kubernetes будет посвящена отдельная статья.

Как использовать Docker Compose

Создаётся файл docker-compose.yml, в котором декларативно описываются сервисы (контейнеры), сети между ними, тома для хранения данных и переменные окружения. Достаточно определить образы, порты, зависимости сервисов друг от друга — и одной командой запустить всё окружение целиком.

Ниже приведена подборка полезных команд для работы с Docker Compose:

Команда Задача

docker compose up

Запустить сервисы в правильном порядке, создав изолированную сеть для взаимодействия контейнеров

docker compose down

Остановить и удалить контейнеры

docker compose logs

Получить объединённый вывод всех сервисов для отладки

docker compose up -d

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

docker compose watch

Автоматическая пересборка при изменении кода

Если хотите больше погрузиться в тему Docker и приступить к сборке первых docker-образов и запуску контейнеров на РЕД ОС, рекомендуем начать с изучения материалов в нашей Базе Знаний:

– Инструкция по установке и настройке Docker в РЕД ОС

– Задать вопрос в сообществе пользователей РЕД ОС: в Telegram и в MAX

Автор статьи

Команда РЕД СОФТ

Была ли статья полезной?

Спасибо
за обратную связь!🔥

Примечания к статье

РЕД ОС — российская операционная система, проверенная 2 миллионами инсталляций и обеспечивающая стабильную работу корпоративных сервисов на серверах и рабочих станциях. Разработчик гарантирует длительную поддержку версий — более 5 лет. РЕД ОС позволяет строить функциональные ИТ-инфраструктуры для комфортного перехода с зарубежных решений.

Почему статья не помогла?

* — обязательные поля для заполнения

Ваш комментарий

Отправить запрос

* — обязательные поля для заполнения

ФИО *
Компания или ИНН *
ИНН
Телефон *
Доб.
Электронная почта
Дополнительная информация

Отправить запрос

* — обязательные поля для заполнения

ФИО *
Наименование организации
Телефон *
Доб.
Электронная почта
Дополнительная информация

Заявка на расчет стоимости

* — обязательные поля для заполнения

ФИО *
Телефон *
Доб.
Электронная почта
Компания или ИНН *
ИНН
Количество Рабочих станций
Количество Серверов
Сертификация ФСТЭК *

Подписка на уведомления

Подписываясь на уведомления, вы соглашаетесь с условиями обработки персональных данных.

Подписка оформлена

На ваш почтовый адрес отправлено письмо с подтверждением подписки.

Условия для авторизации учебного центра

  1. Наличие лицензии на осуществление образовательной деятельности.
  2. Наличие штатного или внештатного сотрудника, являющегося «Сертифицированным преподавателем РЕД СОФТ» по соответствующему курсу.
  3. Наличие учебных классов, оборудования и программного обеспечения, необходимых для проведения занятий.

Задать вопрос

* — обязательные поля для заполнения

ФИО *
Компания или ИНН *
ИНН
Телефон *
Доб.
Электронная почта
Город
Ваш вопрос

Записаться на курс «Администрирование инфраструктуры, система централизованного управления РЕД АДМ»

* — обязательные поля для заполнения

ФИО полностью *
Номер сертификата *
Компания или ИНН *
ИНН
Должность *
Электронная почта *

Заявка на получение лицензии

* — обязательные поля для заполнения

ФИО *
Компания или ИНН *
ИНН
Телефон *
Доб.
Электронная почта
Дополнительная информация

Заказать звонок

* — обязательные поля для заполнения

ФИО *
Телефон *
Доб.

Подписка на уведомления

Подписываясь на уведомления, вы соглашаетесь с условиями обработки персональных данных.

Подписка оформлена

На ваш почтовый адрес отправлено письмо с подтверждением подписки.

Подписка оформлена

Задать вопрос

* — обязательные поля для заполнения

ФИО *
E-mail *
Компания или ИНН *
ИНН
Вопрос