foundation
Контейнеры
Запускайте изолированные процессы из образов с явными портами, окружением, volumes, лимитами ресурсов и контролем lifecycle.
Контейнер — запущенный процесс из образа с изолированной ФС, process namespace, сетевыми настройками и окружением. Считайте контейнеры одноразовыми: долговечное состояние — в БД, очередях, object storage или явных volumes.
docker run --rm -p 3000:3000 \
-e NODE_ENV=production \
--memory=512m --cpus=1 \
my-api:1.4.2
| Параметр | Назначение | |----------|------------| | `-p host:container` | Публикация портов осознанно | | `-e` / `--env-file` | Внедрение конфигурации | | `--memory` / `--cpus` | Ограничение ресурсов | | `--rm` | Удаление эфемерных инстансов после выхода |
Node.js-сервисы должны обрабатывать `SIGTERM`: перестать принимать трафик, дождаться in-flight запросов и выйти с понятным кодом.
На интервью: entrypoint, переменные окружения, публикация портов, лимиты ресурсов, сигналы, коды выхода и graceful shutdown.
Типовые ошибки: важные данные в writable layer контейнера; несколько несвязанных процессов в одном контейнере; OOM без лимитов.
Компромисс — удобство «всё в одном контейнере» против ясного lifecycle, health-сигналов и эксплуатации.
Чеклист:
- Контейнеры одноразовые.
- Обработка `SIGTERM` и drain работы.
- Долговечное состояние снаружи контейнера.
- Лимиты памяти и CPU в оркестрации.