How is Habitat different than Docker?

I watched the videos, did the tutorial, read the docs, read the tech site stories but I still don’t see why I would use Habitat over the current Docker workflow and ecosystem (including third party) for building, shipping and deploying applications. Both are a type of packaging that puts the application, its dependencies and configuration in a bundle that can run exactly the same everywhere. Docker has Dockerfiles and docker-compose.yml files, Habitat has plan files (seems like a shell script, Dockerfiles and compose files are much simpler). Docker has a central repository/registry “docker hub”, habitat has depots. “docker run redis” == “hab start core/redis”, etc… etc…

The docs/articles say habitat apps can run in containers, but why bother if your app can already be run in a container that achieves the same thing with even greater isolation (cgroups). Why put a self contained app in a self contained container application?

I’m not trying to put down Habitat, I’m trying to understand its role. As I currently see it, why would I choose this over the more mature Docker environment with a massive established ecosystem and user base?

Again I’m just trying to understand what I’m missing, if I’m missing something please point me in the right direction.

Thanks Robert!

You’ve done an excellent job explaining the where Habitat and Docker overlap, and when you export a Habitat package to a Docker container, you get all of the advantages of Docker and can use it on all of the platforms and tools that Docker supports.

The other thing that’s important is where Habitat and Docker don’t overlap. For example, the Habitat supervisor:

  • Exposes, with annotation, every configuration setting that can be changed at runtime
  • Exposes an HTTP API to inspect the state of the ring
  • Securely communicates configuration data among a peer-to-peer network of supervisors
  • Allows running packages to upgrade themselves

Hopefully those help explain some of the benefits. For more, check out:

To pile on - you can use habitat with docker, not instead of docker.