The tough part when it comes to dealing with containers (at least for me), is picking the platform you are going to run them on and then learning all the tools.
Do you use Docker? Rocket? LXC?
Do you automate configuration management and deployment using Puppet? Chef? Ansible?
Do you run them bare metal or nest them in VM instances on a Hypervisor/Cluster?
And those are just the tools that come to mind. You also need a certain level of proficiency when it comes to shell scripting, and many of the other frequently used languages (Python, Ruby, Javascript, PHP...).
There are so many pieces of the puzzle that really need to be in place before containerization of workloads can become a viable replacement for current virtualized infrastructures. There are many projects that have already adopted the format and written their own scripts/APIs to really simplify the process of deploying and maintaining their products in containers. Discourse forum software is a great example. Everything is managed from a single script, instead of having to interface with Docker directly.