Need advice about which tool to choose?Ask the StackShare community!

Dapr

96
336
+ 1
9
Docker

174.9K
140.5K
+ 1
3.9K
Add tool

Dapr vs Docker: What are the differences?

Introduction

Dapr and Docker are both widely used technologies in the software development and deployment space. While they serve different purposes, understanding the key differences between them is crucial for developers and operators.

1. Containerization vs. Runtime for Microservices:

Docker is primarily a containerization platform that allows developers to package applications along with their dependencies into containers. It provides an isolated and consistent runtime environment for applications across different platforms. On the other hand, Dapr is a runtime for microservices that abstracts away the complexities of distributed systems. It provides a set of building blocks and APIs to make it easier to build microservices-based applications with features like service invocation, pub/sub messaging, and state management.

2. Level of Abstraction:

Docker provides a high level of abstraction by encapsulating the entire application stack into containers. It allows developers to focus on building and packaging their applications without worrying about the infrastructure details. Dapr, on the other hand, operates at a higher level of abstraction by providing a runtime that abstracts away the complexities of distributed systems. It allows developers to focus on building the business logic of their microservices without worrying about the underlying infrastructure.

3. Dependency Management:

Docker handles dependencies by bundling all the required dependencies and libraries into the container image. This ensures that the application runs consistently across different environments. Dapr, on the other hand, relies on external dependencies that can be managed and accessed via its runtime. It allows developers to leverage existing infrastructure components like message brokers, databases, and caching systems.

4. Portability:

Docker provides a high degree of portability as containers can run on any platform that supports Docker. This enables developers to easily deploy their applications on different environments without any modifications. Dapr, on the other hand, is also designed to be portable, but it requires the underlying infrastructure to have Dapr runtime installed. While Dapr supports multiple programming languages, portability may be constrained by the availability of Dapr runtime on the target platform.

5. Composability:

Docker allows developers to compose complex applications by orchestrating multiple containers using tools like Docker Compose and Kubernetes. It provides a unified way to define and manage the composition of containers. Dapr, on the other hand, focuses on the runtime aspects of microservices and provides building blocks for composing microservices-based applications. It allows developers to define interactions and connections between different microservices using Dapr APIs.

6. Management and Monitoring:

Docker provides tools for managing and monitoring containers, such as Docker Swarm and third-party tools like Prometheus and Grafana. It allows operators to monitor the containerized applications, scale them, and manage their lifecycle. Dapr, on the other hand, provides observability features like distributed tracing and metrics collection as part of its runtime. It also integrates with existing monitoring and observability tools to provide insights into the microservices-based applications.

In Summary, Docker is a containerization platform that abstracts away the complexities of packaging and deploying applications, while Dapr is a runtime for microservices that provides building blocks for building distributed systems.

Decisions about Dapr and Docker
Florian Sager
IT DevOp at Agitos GmbH · | 3 upvotes · 457K views
Chose
LXDLXD
over
DockerDocker

lxd/lxc and Docker aren't congruent so this comparison needs a more detailed look; but in short I can say: the lxd-integrated administration of storage including zfs with its snapshot capabilities as well as the system container (multi-process) approach of lxc vs. the limited single-process container approach of Docker is the main reason I chose lxd over Docker.

See more
Manage your open source components, licenses, and vulnerabilities
Learn More
Pros of Dapr
Pros of Docker
  • 3
    Manage inter-service state
  • 2
    MTLS "for free"
  • 2
    App dashboard for rapid log overview
  • 2
    Zipkin app tracing "for free"
  • 823
    Rapid integration and build up
  • 692
    Isolation
  • 521
    Open source
  • 505
    Testa­bil­i­ty and re­pro­ducibil­i­ty
  • 460
    Lightweight
  • 218
    Standardization
  • 185
    Scalable
  • 106
    Upgrading / down­grad­ing / ap­pli­ca­tion versions
  • 88
    Security
  • 85
    Private paas environments
  • 34
    Portability
  • 26
    Limit resource usage
  • 17
    Game changer
  • 16
    I love the way docker has changed virtualization
  • 14
    Fast
  • 12
    Concurrency
  • 8
    Docker's Compose tools
  • 6
    Easy setup
  • 6
    Fast and Portable
  • 5
    Because its fun
  • 4
    Makes shipping to production very simple
  • 3
    Highly useful
  • 3
    It's dope
  • 2
    Package the environment with the application
  • 2
    Super
  • 2
    Open source and highly configurable
  • 2
    Simplicity, isolation, resource effective
  • 2
    MacOS support FAKE
  • 2
    Its cool
  • 2
    Does a nice job hogging memory
  • 2
    Docker hub for the FTW
  • 2
    HIgh Throughput
  • 2
    Very easy to setup integrate and build
  • 0
    Asdfd

Sign up to add or upvote prosMake informed product decisions

Cons of Dapr
Cons of Docker
  • 1
    Additional overhead
  • 8
    New versions == broken features
  • 6
    Unreliable networking
  • 6
    Documentation not always in sync
  • 4
    Moves quickly
  • 3
    Not Secure

Sign up to add or upvote consMake informed product decisions

- No public GitHub repository available -

What is Dapr?

It is a portable, event-driven runtime that makes it easy for developers to build resilient, stateless and stateful microservices that run on the cloud and edge and embraces the diversity of languages and developer frameworks.

What is Docker?

The Docker Platform is the industry-leading container platform for continuous, high-velocity innovation, enabling organizations to seamlessly build and share any application — from legacy to what comes next — and securely run them anywhere

Need advice about which tool to choose?Ask the StackShare community!

What companies use Dapr?
What companies use Docker?
Manage your open source components, licenses, and vulnerabilities
Learn More

Sign up to get full access to all the companiesMake informed product decisions

What tools integrate with Dapr?
What tools integrate with Docker?

Sign up to get full access to all the tool integrationsMake informed product decisions

Blog Posts

PythonDockerKubernetes+7
3
1161
PythonDockerKubernetes+14
12
2658
Jul 9 2019 at 7:22PM

Blue Medora

DockerPostgreSQLNew Relic+8
11
2380
DockerAmazon EC2Scala+8
6
2764
GitHubDockerReact+17
41
37426
What are some alternatives to Dapr and Docker?
Istio
Istio is an open platform for providing a uniform way to integrate microservices, manage traffic flow across microservices, enforce policies and aggregate telemetry data. Istio's control plane provides an abstraction layer over the underlying cluster management platform, such as Kubernetes, Mesos, etc.
Akka
Akka is a toolkit and runtime for building highly concurrent, distributed, and resilient message-driven applications on the JVM.
Orleans
Orleans is a framework that provides a straightforward approach to building distributed high-scale computing applications, without the need to learn and apply complex concurrency or other scaling patterns. It was created by Microsoft Research and designed for use in the cloud.
Knative
Knative provides a set of middleware components that are essential to build modern, source-centric, and container-based applications that can run anywhere: on premises, in the cloud, or even in a third-party data center
Envoy
Originally built at Lyft, Envoy is a high performance C++ distributed proxy designed for single services and applications, as well as a communication bus and “universal data plane” designed for large microservice “service mesh” architectures.
See all alternatives