Container (контейнер в Docker / Kubernetes)
Container (контейнер в Docker / Kubernetes) (Container) — контейнер
Контекст термина
Термин используется в контексте контейнеризации (Docker, Kubernetes, DevOps). Не относится к HTML-контейнерам, CSS-блокам или UI-компонентам.
Суть в одном предложении
Container — это изолированный запущенный процесс, созданный из Docker Image и работающий в собственном окружении.
Краткое определение
Контейнер — это экземпляр Docker Image, запущенный как отдельный процесс с изоляцией файловой системы, сети и ресурсов.
Где используется
- Docker
- Docker Compose
- Kubernetes
- CI/CD
- Cloud-инфраструктура
- Микросервисы
Архитектурное значение
Container решает задачу:
Запустить приложение в предсказуемом, изолированном окружении без полноценной виртуальной машины.
Контейнер:
- использует ядро хоста
- изолирован через namespaces
- ограничен через cgroups
- запускается как обычный процесс
Container vs Docker Image
| Docker Image | Container |
|---|---|
| Шаблон | Запущенный процесс |
| Неизменяемый | Имеет runtime-состояние |
| Хранится в registry | Работает в системе |
Image → Container Один образ → много контейнеров.
Как создаётся контейнер
Есть образ:
docker build -t my-app:1.0 .
Запуск контейнера:
docker run -d -p 8080:80 --name app my-app:1.0
Теперь:
my-app:1.0— Imageapp— Container
Проверка:
docker ps
Что изолируется в контейнере
- Файловая система
- Сетевое пространство
- Процессы
- Пользователи
- Ресурсы CPU и RAM
Это достигается через:
- Linux namespaces
- cgroups
- OverlayFS
Состояние контейнера
Контейнер может быть:
- running
- stopped
- paused
- exited
Остановка:
docker stop app
Удаление:
docker rm app
Временность контейнеров
Контейнер — временный.
Если удалить контейнер:
- данные внутри исчезнут
- если не используется volume
Поэтому для данных используется Volume:
docker run -v mydata:/var/lib/mysql mysql
Контейнер в Kubernetes
В Kubernetes контейнер запускается внутри Pod.
Pod может содержать:
- один контейнер
- несколько контейнеров (sidecar)
Ограничение ресурсов
Пример ограничения памяти:
docker run -m 512m my-app
Контейнер не сможет использовать больше 512MB RAM.
Чем контейнер отличается от виртуальной машины
| Контейнер | Виртуальная машина |
|---|---|
| Использует ядро хоста | Имеет собственное ядро |
| Быстро запускается | Медленный старт |
| Лёгкий | Тяжёлый |
| Один процесс | Полноценная ОС |
Безопасность контейнеров
Контейнер ≠ полная изоляция.
Ошибки:
❌ Запуск от root ❌ Открытые привилегированные контейнеры ❌ Секреты в ENV
Лучше:
USER www-data
Где особенно важен термин
- Микросервисная архитектура
- CI/CD
- Kubernetes-кластеры
- Облачная инфраструктура
- Dev / Test окружения
Для простого VPS без масштабирования контейнер может быть избыточен.
Что не является контейнером
- Docker Image
- Виртуальная машина
- Архив с кодом
- HTML-элемент
Частые ошибки понимания
❌ Контейнер = виртуальная машина ❌ Контейнер хранит данные навсегда ❌ Контейнер — это сервер
Контейнер — это процесс с изоляцией.
Аналоги и связанные термины
- Docker Image
- Docker
- Kubernetes
- Pod
- Volume
- Namespace
Пример использования
«Приложение запущено в трёх контейнерах для горизонтального масштабирования.»
Мини-FAQ
Можно ли изменить контейнер? Можно, но изменения исчезнут после удаления. Для постоянства создаётся новый Image.
Можно ли запускать несколько контейнеров из одного Image? Да. Это стандартная практика.
Контейнер ускоряет приложение? Нет. Он обеспечивает изоляцию и воспроизводимость, а не производительность.
Смотри также
- Docker Image
- Docker
- Kubernetes
- Volume
- CI/CD