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

Docker

172.2K
138.2K
+ 1
3.9K
LXD

104
194
+ 1
68
rkt

29
112
+ 1
10

Docker vs LXD vs rkt: What are the differences?

Introduction

In the world of containerization, Docker, LXD, and rkt are popular technologies that allow developers to package, distribute, and run applications in isolated environments. Each of these technologies has its own unique features and advantages.

  1. Containerization Technology: Docker is primarily a containerization technology that focuses on creating lightweight, portable, self-sufficient containers that can run on any machine. It provides a complete ecosystem for building, shipping, and running containers. In contrast, LXD is more of a system container manager that allows users to run full-fledged Linux distributions within containers. It offers a more traditional virtualization-like experience with greater isolation from the host system. On the other hand, rkt is a security-focused container runtime that promotes Pod-native infrastructure and emphasizes cluster orchestration and management.

  2. Image Distribution: Docker utilizes its Docker Hub for storing and sharing container images, making it easy for users to access a vast repository of pre-built images. LXD relies on its image stores, where users can upload, download, and share images specifically designed for use with LXD containers. In comparison, rkt does not have a centralized image distribution platform like Docker Hub. Users typically rely on container registries like quay.io or self-hosted registries for sharing and managing rkt images.

  3. Security Model: Docker has a strong focus on security, with features like namespaces, control groups, and capabilities to isolate containers from each other and the host system. It also offers content trust, which allows users to verify the integrity and provenance of container images. LXD provides a secure-by-default approach, isolating containers with Linux security mechanisms while limiting their access to host resources. On the other hand, rkt emphasizes security through its use of App Container (appc) specifications, which define every aspect of a container's runtime environment to enhance predictability and security.

  4. Orchestration and Clustering: Docker comes with built-in orchestration tools like Docker Swarm and Docker Compose, which enable users to deploy and manage containerized applications across multiple hosts. LXD, being more focused on system containers, does not offer built-in support for orchestration but can be used in conjunction with tools like Juju or Kubernetes for cluster management. rkt, on the other hand, is designed to be a flexible component that can be integrated with various orchestrators and cluster managers, such as Kubernetes, Mesos, or Nomad.

  5. Runtime Architecture: Docker uses a client-server architecture, where the Docker client interacts with the Docker daemon to build, run, and manage containers. LXD operates as a daemon-less service, enabling users to interact with the LXD API directly to manage containers and virtual machines. rkt follows a pod-centric model, where a pod is a group of containers that share resources and networking, allowing users to define complex, multi-container applications more easily than with Docker or LXD.

In Summary, Docker, LXD, and rkt each offer unique approaches to containerization, catering to different use cases and preferences, ranging from container management, security, image distribution, orchestration capabilities, and runtime architecture.

Decisions about Docker, LXD, and rkt
Florian Sager
IT DevOp at Agitos GmbH · | 3 upvotes · 434.8K 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
Get Advice from developers at your company using StackShare Enterprise. Sign up for StackShare Enterprise.
Learn More
Pros of Docker
Pros of LXD
Pros of rkt
  • 823
    Rapid integration and build up
  • 691
    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
    Very easy to setup integrate and build
  • 2
    HIgh Throughput
  • 2
    Package the environment with the application
  • 2
    Does a nice job hogging memory
  • 2
    Open source and highly configurable
  • 2
    Simplicity, isolation, resource effective
  • 2
    MacOS support FAKE
  • 2
    Its cool
  • 2
    Docker hub for the FTW
  • 2
    Super
  • 0
    Asdfd
  • 10
    More simple
  • 8
    Open Source
  • 8
    API
  • 8
    Best
  • 7
    Cluster
  • 5
    Multiprocess isolation (not single)
  • 5
    Fast
  • 5
    I like the goal of the LXD and found it to work great
  • 4
    Full OS isolation
  • 3
    Container
  • 3
    More stateful than docker
  • 2
    Systemctl compatibility
  • 5
    Security
  • 3
    Robust container portability
  • 2
    Composable containers

Sign up to add or upvote prosMake informed product decisions

Cons of Docker
Cons of LXD
Cons of rkt
  • 8
    New versions == broken features
  • 6
    Unreliable networking
  • 6
    Documentation not always in sync
  • 4
    Moves quickly
  • 3
    Not Secure
    Be the first to leave a con
      Be the first to leave a con

      Sign up to add or upvote consMake informed product decisions

      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

      What is LXD?

      LXD isn't a rewrite of LXC, in fact it's building on top of LXC to provide a new, better user experience. Under the hood, LXD uses LXC through liblxc and its Go binding to create and manage the containers. It's basically an alternative to LXC's tools and distribution template system with the added features that come from being controllable over the network.

      What is rkt?

      Rocket is a cli for running App Containers. The goal of rocket is to be composable, secure, and fast.

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

      What companies use Docker?
      What companies use LXD?
      What companies use rkt?

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

      What tools integrate with Docker?
      What tools integrate with LXD?
      What tools integrate with rkt?

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

      Blog Posts

      PythonDockerKubernetes+7
      3
      1114
      PythonDockerKubernetes+14
      12
      2621
      Jul 9 2019 at 7:22PM

      Blue Medora

      DockerPostgreSQLNew Relic+8
      11
      2349
      DockerAmazon EC2Scala+8
      6
      2728
      GitHubDockerReact+17
      41
      36705
      What are some alternatives to Docker, LXD, and rkt?
      LXC
      LXC is a userspace interface for the Linux kernel containment features. Through a powerful API and simple tools, it lets Linux users easily create and manage system or application containers.
      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.
      Cloud Foundry
      Cloud Foundry is an open platform as a service (PaaS) that provides a choice of clouds, developer frameworks, and application services. Cloud Foundry makes it faster and easier to build, test, deploy, and scale applications.
      Vagrant
      Vagrant provides the framework and configuration format to create and manage complete portable development environments. These development environments can live on your computer or in the cloud, and are portable between Windows, Mac OS X, and Linux.
      Red Hat OpenShift
      OpenShift is Red Hat's Cloud Computing Platform as a Service (PaaS) offering. OpenShift is an application platform in the cloud where application developers and teams can build, test, deploy, and run their applications.
      See all alternatives