Increasingly developers are being pushed to understand the operations world of web application deployments as continuous delivery gains importance in the "new normal" world of agile developer workflows. Configuration management tools like Puppet and Chef are gaining popularity for precisely the same reason, as they allow developers to deal with "infrastructure as code". However, there is also a growing understanding that servers are better off being treated as immutable, to avoid the various complications that arise from constantly evolving/changing configurations. Docker is a tool that allows us to deploy various parts of a server into separate containers and let us save a container state so this can either be published or improved upon. This talk will allow us to understand all these concepts in order to achieve immutable servers and zero-downtime deployments.