Does Azure Service Fabric do the same thing as Docker?

doker picture doker · Sep 2, 2016 · Viewed 17.7k times · Source

My thinking is that people use Docker to be sure that local environment is the same as production and that I they can stop thinking about where are their apps running physically and balancing mechanisms should just allocate apps in best places for that moment.

I'm 100% web based and I'm going to move to cloud together with our databases, and what cannot be moved will be seamlessly bridged so the corporate stuff and the cloud will become one subnetwork.

And so I'm wondering, maybe Service Fabric already does the same thing that Docker does plus it gives as address translation service (fabric:// that acts a bit like DNS for the processes in fabric space) plus (important for some) encourages on demand worker allocation - huge scalability perk.

  1. Can Service Fabric successfully replace Docker?
  2. Is it gaining audience and acceptance? Because otherwise even the greatest invention can fail.

Answer

Nathaniel Waisbrot picture Nathaniel Waisbrot · Sep 2, 2016

It's confusing since Docker (the company) is trying to stake claims in everything cloud.

  • Docker Engine (what most people call "Docker") is a containerization technology. It can give you
    • Process isolation
    • Network isolation
    • Consistent application environment
  • Docker Hub is an image registry. It stores Docker images so you can download them as part of your deployment.
  • Docker Cloud is an orchestration system for Docker. It can give you
    • Scale your applications up and down
    • Connect your applications to each other
    • CI testing, integrated with Docker Hub (this isn't part of orchestration, just another thing it does)

Service Fabric is an orchestration system. It can orchestrate Docker containers, but it can also integrate more tightly with your services if you build specifically for Fabric. (Docker is completely agnostic about what runs inside a container.)

So Service Fabric is mostly comparable to Docker Cloud, though it's not an exact match. There are some other Docker-based orchestration solutions (Kubernetes is probably the biggest) and there are other cloud-based micro-service solutions (Heroku is probably the best-known).

The primary disadvantage of Service Fabric is that it's a Microsoft technology and so you're going to be tied to Azure to a greater degree than if you were running Docker. The other is that Docker has a broader range of choices for building your stack: all three Docker-things I listed above have at least one open-source alternative (this is also a big disadvantage of Docker, since nobody's laying out a single Best Practices For You document).

If you love Microsoft and if cobbling systems together is not something that's important to you, then Service Fabric should be a fine alternative to the Docker ecosystem. (And you can still run Docker containers under it.)