you should be aware that docker has a tendency to break there interfaces so all your devs / servers should always be on the same version.
thehftguy.com/2016/11/01/docker-in-production-an-…
maybe this one helps.
In one company I work for they had for example the network issues that docker changed the complete routing behavior between versions. :)
There are always pitfalls just try to stay consistent throughout the whole architecture, otherwise probably one will forget / don't know he breaks the system by changing 1 config :)
There are many, but I guess most are either obvious or well known. I think one of the most challenging when I started was the additional level of monitoring required. For instance, CPU/memory monitoring is well known, but monitoring now both the host resources plus the container resources (ie what they used vs what you provisioned) was tricky sometimes.. we didn't look at the right gauge and we think our memory is ok, but the provisioning isn't good, or vice-versa. In short, you add a new layer, and it does not remove complexity of your system, it just moves it (when you had challenges with vm or version and thinks like that, this is now easier, but the drawback is the added complexity of container resources management and scheduling)
Siddarthan Sarumathi Pandian
Full Stack Dev at Agentdesks | Ex Hashnode | Ex Shippable | Ex Altair Engineering
At my previous job, we ran docker containers in production and it seemed to work seamlessly for most parts. Docker is relatively new technology and experience with it is usually acquired over time.
I think the key issues we had to face was that each subsequent release of Docker came with regressions. Something that worked with 1.6 wouldn't work on 1.12.
Another issue I personally hated was the old images taking up a lot of space and there wasn't a clean way to remove old images. There was this instance where we were deploying a bunch of urgent fixes and boom, the new container won't come up - the reason, the host ran out of space. We had around 20 mins of downtime for no engineering error of ours.
That being said, one of my favorite features about docker is how you can simulate your production environment on local, making it super easier to reproduce bugs on local and not run into environment mismatch issues. Sure, there are pitfalls with docker, but I think things will only improve over time.