Для продакшена удобнее готовое решение, например, легкий вариант (с поддержкой многосерверности) это Flynn.io.
Или Dokku для одного сервера.
А для девелопероского окружения не Докер, а Вагрант.
Идея Докера, что контейнер, нужный вам создается КАЖДЫЙ РАЗ ЗАНОВО для очередной версии вашего ПО.
Это факт частенько упускают из виду, пытаясь создать Докер-контейнер навечно.
CI/CD работает так:
Пушите код в Git,
а, к примеру, Gitlab запускает по гит-хукам воркеры для тестирования.
Воркеры создают новые контейнера на основании одного и того же файла описания Докера Dockerfile (каждый раз заново - для "чистоты эксперимента", то есть для стабильности отладки).
Если тесты проходят удачно, то тот же самый контейнер отправляется в DockerRegistry продакшн-системы,
откуда его забирает система оркестрации/управления кластером (тот же Flynn).
Как вводную по разработке архитектуры вашей системы под контейнерами рекомендую прочитать этот кратенький текст:
https://12factor.net/ru/
Какие СУБД в Докер, перекреститесь...
https://habrahabr.ru/post/332450/#comment_10299122
Да и вообще подумайте нужен ли вам этот гемор:
soar.name/ru/pro/half-a-year-with-docker-swarm-mod...
Польза очевидно большая.
Но Докер - не серебряная пуля.