Как мне создать свой контейнер состоящий из образов NodeJs, MongoDB, ElasticSearch, Redis?
Используйте docker-compose. Вот посмотрите пример
https://docs.docker.com/compose/wordpress/#bring-u... Где это все хранить?
Хранить можно в облаках, но за это нужно платить. Проще таскать с собой docker-compose.yml, и на тестовых серверах собирать.
Как мне расшарить папки проектов для Docker?
Для этого существуют volumes.
volumes:
- /home/user/Projects/folder1:/var/www/html
Теперь папка folder1 на вашем компьютере доступна в контейнере по пути /var/www/html.
Как мне это интегрировать с CI и CD?
Да все просто. Качаете gitом ваш проект, собираете контейнеры на ваших тестовых серверах и вперед. Можете jenkins еще поставить, он бесплатный. Вот тут есть видосы, как это сделать
https://serversforhackers.com/series/jenkins