At WeDev Technolgy we started use Docker to increase our productivity on development as usual, and it help us on CI/CD too. See below what we do:
1 - docker-compose is useful for development
We can easily create a (or many) Dockerfile for our applications.
2 - Docker Swarm for production? Uhhh maybe not
For production we are using Kubernetes based on any image that has been built by Docker.
3 - Docker Hub for public images and Google Container Registry for private images
Docker Hub is awesome, but for private images - and on real world, you will need it - we are using Google Container Registry - GCR. The first reason is because we are using Google Cloud. For second, GCR has a better price than Docker Hub, and best team management.
4 - Bitbucket Pipelines to build and push to production
Also, we use Bitbucket Pipelines to build our image, push into GCR and start it on Google Kubernetes Engine. Sounds hard, right? But no, for put everything on Production, all we need to do is a simple push on a branch.
5 - You build it, You run it
Everybody who join us will learn Docker and Kubernetes. Every microsservice made by a engineer will be deployed by himself.