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

Dokku

178
216
+ 1
69
Kubernetes

58.6K
50.4K
+ 1
677
Add tool

Dokku vs Kubernetes: What are the differences?

  1. Automation and Orchestration: Dokku is a simple, lightweight platform that focuses on automating the deployment process by using a simple command-line interface. It is primarily designed for small to medium-sized projects and provides basic deployment and scaling functionalities. In contrast, Kubernetes is a powerful container orchestration platform that offers advanced automation and orchestration capabilities. It enables the management of large-scale containerized applications, automatic scaling, and high availability, making it suitable for complex and scalable projects.

  2. Infrastructure Complexity: Dokku is relatively easy to set up and use as it runs directly on a single server. It simplifies the deployment process by abstracting away the complexity of infrastructure management. On the other hand, Kubernetes is designed to operate on a cluster of multiple servers, which leads to a higher level of complexity. It requires additional infrastructure components like a load balancer and a distributed file system, making it better suited for enterprise-grade applications with more complex infrastructure requirements.

  3. Supported Environments: Dokku is specifically built for deploying applications on a single server, making it suitable for small projects or personal use. It is compatible with popular hosting providers and can be easily set up on a virtual private server. Conversely, Kubernetes is designed to scale and orchestrate applications across multiple servers or clusters, making it a better choice for large-scale production environments. It supports various cloud providers and can be deployed on-premises or in a hybrid cloud setup.

  4. Customizability and Extensibility: Dokku is lightweight and focuses on simplicity, which limits its customization options. It provides a minimal set of features to deploy applications quickly but lacks advanced customizability. In contrast, Kubernetes is highly extensible and customizable. It offers a robust API and includes a wide range of features like service discovery, load balancing, and rolling updates. Kubernetes also provides a vast ecosystem of plugins and extensions that can be used to enhance its functionality based on specific needs.

  5. Community and Support: Dokku has a smaller community compared to Kubernetes. While it has an active community that provides updates and support, the resources and community-driven contributions are not as extensive as Kubernetes. Kubernetes, being an open-source platform developed by Google, has a large and vibrant community. It receives frequent updates and benefits from the contributions of many developers and companies. The extensive community support ensures a more stable and well-maintained platform.

  6. Learning Curve and Complexity: Dokku has a relatively low learning curve and is easy to set up and use for small projects. It provides a straightforward deployment workflow and requires minimal configuration. On the other hand, Kubernetes has a steeper learning curve due to its advanced features and complex architecture. It requires a deeper understanding of containerization, networking, and distributed systems. Setting up and managing a Kubernetes cluster involves more configuration and administrative tasks, making it better suited for experienced DevOps teams.

In Summary, Dokku is a lightweight and simple deployment platform suited for small projects, while Kubernetes is a powerful container orchestration platform designed for large-scale, complex applications with advanced automation and customization options.

Decisions about Dokku and Kubernetes
Simon Reymann
Senior Fullstack Developer at QUANTUSflow Software GmbH · | 30 upvotes · 8.9M views

Our whole DevOps stack consists of the following tools:

  • GitHub (incl. GitHub Pages/Markdown for Documentation, GettingStarted and HowTo's) for collaborative review and code management tool
  • Respectively Git as revision control system
  • SourceTree as Git GUI
  • Visual Studio Code as IDE
  • CircleCI for continuous integration (automatize development process)
  • Prettier / TSLint / ESLint as code linter
  • SonarQube as quality gate
  • Docker as container management (incl. Docker Compose for multi-container application management)
  • VirtualBox for operating system simulation tests
  • Kubernetes as cluster management for docker containers
  • Heroku for deploying in test environments
  • nginx as web server (preferably used as facade server in production environment)
  • SSLMate (using OpenSSL) for certificate management
  • Amazon EC2 (incl. Amazon S3) for deploying in stage (production-like) and production environments
  • PostgreSQL as preferred database system
  • Redis as preferred in-memory database/store (great for caching)

The main reason we have chosen Kubernetes over Docker Swarm is related to the following artifacts:

  • Key features: Easy and flexible installation, Clear dashboard, Great scaling operations, Monitoring is an integral part, Great load balancing concepts, Monitors the condition and ensures compensation in the event of failure.
  • Applications: An application can be deployed using a combination of pods, deployments, and services (or micro-services).
  • Functionality: Kubernetes as a complex installation and setup process, but it not as limited as Docker Swarm.
  • Monitoring: It supports multiple versions of logging and monitoring when the services are deployed within the cluster (Elasticsearch/Kibana (ELK), Heapster/Grafana, Sysdig cloud integration).
  • Scalability: All-in-one framework for distributed systems.
  • Other Benefits: Kubernetes is backed by the Cloud Native Computing Foundation (CNCF), huge community among container orchestration tools, it is an open source and modular tool that works with any OS.
See more
Get Advice from developers at your company using StackShare Enterprise. Sign up for StackShare Enterprise.
Learn More
Pros of Dokku
Pros of Kubernetes
  • 23
    Simple
  • 12
    Open Source
  • 11
    Built on Docker
  • 11
    Free
  • 4
    Yay, it works like a charm
  • 4
    Git deploy
  • 2
    HTTP proxy from public hostname to container IP address
  • 2
    Zero downtime deploys
  • 164
    Leading docker container management solution
  • 128
    Simple and powerful
  • 106
    Open source
  • 76
    Backed by google
  • 58
    The right abstractions
  • 25
    Scale services
  • 20
    Replication controller
  • 11
    Permission managment
  • 9
    Supports autoscaling
  • 8
    Cheap
  • 8
    Simple
  • 6
    Self-healing
  • 5
    No cloud platform lock-in
  • 5
    Promotes modern/good infrascture practice
  • 5
    Open, powerful, stable
  • 5
    Reliable
  • 4
    Scalable
  • 4
    Quick cloud setup
  • 3
    Cloud Agnostic
  • 3
    Captain of Container Ship
  • 3
    A self healing environment with rich metadata
  • 3
    Runs on azure
  • 3
    Backed by Red Hat
  • 3
    Custom and extensibility
  • 2
    Sfg
  • 2
    Gke
  • 2
    Everything of CaaS
  • 2
    Golang
  • 2
    Easy setup
  • 2
    Expandable

Sign up to add or upvote prosMake informed product decisions

Cons of Dokku
Cons of Kubernetes
    Be the first to leave a con
    • 16
      Steep learning curve
    • 15
      Poor workflow for development
    • 8
      Orchestrates only infrastructure
    • 4
      High resource requirements for on-prem clusters
    • 2
      Too heavy for simple systems
    • 1
      Additional vendor lock-in (Docker)
    • 1
      More moving parts to secure
    • 1
      Additional Technology Overhead

    Sign up to add or upvote consMake informed product decisions

    - No public GitHub repository available -

    What is Dokku?

    It is an extensible, open source Platform as a Service that runs on a single server of your choice. It helps you build and manage the lifecycle of applications from building to scaling.

    What is Kubernetes?

    Kubernetes is an open source orchestration system for Docker containers. It handles scheduling onto nodes in a compute cluster and actively manages workloads to ensure that their state matches the users declared intentions.

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

    What companies use Dokku?
    What companies use Kubernetes?
    See which teams inside your own company are using Dokku or Kubernetes.
    Sign up for StackShare EnterpriseLearn More

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

    What tools integrate with Dokku?
    What tools integrate with Kubernetes?

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

    Blog Posts

    Kubernetesetcd+2
    2
    1153
    Dec 8 2020 at 5:50PM

    DigitalOcean

    GitHubMySQLPostgreSQL+11
    2
    2352
    PythonDockerKubernetes+7
    3
    1095
    May 21 2020 at 12:02AM

    Rancher Labs

    KubernetesAmazon EC2Grafana+12
    5
    1486
    Apr 16 2020 at 5:34AM

    Rancher Labs

    KubernetesRancher+2
    2
    928
    What are some alternatives to Dokku and Kubernetes?
    Heroku
    Heroku is a cloud application platform – a new way of building and deploying web apps. Heroku lets app developers spend 100% of their time on their application code, not managing servers, deployment, ongoing operations, or scaling.
    Flynn
    Flynn lets you deploy apps with git push and containers. Developers can deploy any app to any cluster in seconds.
    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
    Rancher
    Rancher is an open source container management platform that includes full distributions of Kubernetes, Apache Mesos and Docker Swarm, and makes it simple to operate container clusters on any cloud or infrastructure platform.
    Docker Compose
    With Compose, you define a multi-container application in a single file, then spin your application up in a single command which does everything that needs to be done to get it running.
    See all alternatives