Regarding the 'Building images' section, I couldn't avoid to feel again the need I had when I wrote this tool [1] for easily writting Dockerfiles. You might find it interesting, at least as what it is, a PoC hehe

I hope some developers out there find it useful in heavy container development phases since when you have a more or less definitive Dockerfile it might become a little pain to merge changes from the auto-Dockerfile. Anyhow it is interesting for recording every action inside a container just in case it might be useful and, since it's easy to remove any track of the auto-Dockerfiles (rm Dockerfile.* and you are done), I don't find any reason not to use it always you want to interact into a container.

19.
The Docker workflow 1/2
●
Work in dev environment
(local machine or container)
●
Other services can be perfect copies of prod
●
Whenever you want to test « for real »:
–
Build in seconds
–
Run instantly

20.
The Docker workflow 2/2
●
Push your build to a registry (public or private)
●
Run it in CI/CD
●
Run it in production
●
Rejoice
Something goes wrong?
Just re-run previous version (it's still there!)

21.
I'm starting a new project!
●
Each service will be in its own container(s)
●
Build an image for each service
●
Pin dependencies (packages etc.) accurately
●
Link services together
→ Recommended workflow!

22.
I'm Dockerizing some code!
●
●
●
●
Making a single service runnable on Docker
Create a « Dockerfile »
(Think Makefile, Vagrantfile...)
If it's on GitHub, create a Trusted Build
(will automatically build ready-to-run images)
In any case, register it on index.docker.io

23.
I'm migrating to Docker!
●
Easy if there is only one service per server
–
Dockerize the service
–
Containerize administrative functions (logs...)
●
Otherwise, try to split services
●
You don't need to move everything to Docker
●
Don't use containers as VMs, even if you can!

24.
I'm already using
Chef/Puppet/Salt/Ansible/...!
●
Plan A: generic images
–
–
Run that image just like you would run a VM
–
●
Put your configuration management tool in an image
Great for mixed environments
Plan B: specialized images
–
Put your configuration management tool in an image
–
Run that image, freeze the result, run it!
–
Faster and safer