We recently experienced exactly the scenario described in the article when on boarding our team with a customer. At first it looks slick to be up and running so fast. The problem is, you still have to keep that Dockerfile updated correctly so you'd better understand your dependencies. You still have to have redis, postgresql, and whatever other system dependencies installed. The moment you need to update your application that causes a need to update your docker images means that a 30 second fix just turned into a bigger administrative deal.
Want to use containers in production? Go for it, have fun. Do I think you need better dependency management and a clear way to keep developer environments in sync? Absolutely. I'm just not yet convinced Docker itself is adding anything to that problem.
Docker's currently burning resources trying to force Docker into production before it's ready, because that's where they see a market, and thus where they can make money. It's really not that hard to take a docker container/image and turn it into a bootable disk image to be used on your VM host though.
I'd prefer they spend their time making Dockerfiles more useful, but Dockerfiles are a win where Puppet and Chef failed me.
Yes, it is another layer of abstraction, but all of that stuff (OS, language dependencies, etc) needs to be maintained anyway, so you might as well have a single file to describe it all. Even better if there are automation tools like Docker to automate all of the infrastructure for you.