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 в оркестрации.