Docker vs Heroku

Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications. Consisting of Docker Engine, a portable, lightweight runtime and packaging tool, and Docker Hub, a cloud service for sharing applications and automating workflows, Docker enables apps to be quickly assembled from components and eliminates the friction between development, QA, and production environments. As a result, IT can ship faster and run the same app, unchanged, on laptops, data center VMs, and any cloud.
Heroku is the leading platform as a service in the world and supports Ruby, Java, Python, Scala, Clojure, and Node.js. Deploying an app is simple and easy. No special alternative tools needed, just a plain git push. Deployment is instant, whether your app is big or small.
Face to face in the news:

2015 - Docker makes containers more portable, wants to develop Common Container Standard. Beware Heroku

Docker is rolling out quite a few updates to its software container solution. The biggest announcement of the day is the launch of the Open Container Project — an attempt to create a standard container format and runtime under the Linux Foundation that’s supported by the likes of Docker, CoreOS (which had been working on its own competing format), Microsoft, Google, Amazon, RedHat and VMware. Another new element is Docker networking stack that =allows developers to take their networked Docker containers from one platform to another without having to recreate the network. To a large degree, this new feature is the result of Docker’s acquisition of SocketPlane earlier this year and the feedback Docker has been getting from its networking partners. SocketPlane allowed developers to essentially create a software-defined networking layer to connect their containers. This ensures that Docker-based applications can communicate across networks and that they are portable across different network infrastructures.