Логично делать контейнеры из сервисов, которые существуют как независимые функциональные единицы и могут работать друг без друга и настраиваются независимо.
Нода и нжинкс такими являются и следует взять контейнер для ноды и контейнер для нжинкса. Так же монго, редис.
Запускать все вместе удобно с помощью docker-compose.
А насчет ОС, это уж как вам нужно. Если ваше приложение в докере нуждается в ОС, то нужна. Приведите пример где нет FROM ubuntu, debian, alpine etc