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


+ 1

+ 1
Add tool

LXD vs Vagrant: What are the differences?


LXD and Vagrant are both tools used for managing and deploying virtual machines, but they have some key differences. In this article, we will explore the main differences between LXD and Vagrant.

  1. Execution Environment: LXD is a containerization tool that provides a lightweight and isolated environment for running applications. It uses Linux Containers (LXC) to achieve this. On the other hand, Vagrant is a virtualization tool that creates and manages virtual machines using technologies such as VirtualBox, VMware, or Hyper-V. While LXD focuses on containers, Vagrant focuses on virtual machines.

  2. Resource Overhead: LXD containers have lower resource overhead compared to virtual machines created by Vagrant. LXD containers share the host system's kernel, which reduces the memory and CPU usage. In contrast, virtual machines created by Vagrant require a separate operating system, increasing the resource requirements.

  3. Development Workflow: Vagrant is often used in development workflows to create reproducible environments. Developers can define a Vagrantfile that specifies the required software, dependencies, and configuration for their project. These Vagrantfiles can be version-controlled and easily shared across developers, making it easier to set up consistent development environments. LXD, on the other hand, is more focused on production workloads where containers are deployed for ongoing services.

  4. Networking: LXD provides a powerful networking abstraction that allows containers to be connected to networks with various configurations, such as bridged networks or NAT. This flexibility makes it easier to integrate containers into existing network infrastructures. Vagrant, on the other hand, uses virtual networks to isolate virtual machines and provide network connectivity.

  5. Snapshots and Cloning: LXD provides built-in support for creating snapshots and cloning containers. Snapshots allow you to capture the state of a container at a specific point in time and restore it later if needed. Cloning allows you to create duplicate copies of a container with its complete state. Vagrant also supports snapshots and cloning, but it requires additional plugins or configurations to enable these features.

  6. Integration with Orchestration Tools: LXD integrates well with orchestration tools like Kubernetes or Docker Swarm, making it easier to scale and manage containerized applications in a clustered environment. Vagrant, on the other hand, is more commonly used for managing virtual machines in a development or testing environment and might require additional configurations to work seamlessly with orchestration tools.

In Summary, LXD is a containerization tool that focuses on lightweight and isolated environments, whereas Vagrant is a virtualization tool used for managing and deploying virtual machines with a strong focus on development workflows. LXD has lower resource overhead, provides powerful networking capabilities, and integrates well with orchestration tools.

Decisions about LXD and Vagrant
Florian Sager
IT DevOp at Agitos GmbH · | 3 upvotes · 429.2K views

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 LXD
Pros of Vagrant
  • 10
    More simple
  • 8
    Open Source
  • 8
  • 8
  • 7
  • 5
    Multiprocess isolation (not single)
  • 5
  • 5
    I like the goal of the LXD and found it to work great
  • 4
    Full OS isolation
  • 3
  • 3
    More stateful than docker
  • 2
    Systemctl compatibility
  • 352
    Development environments
  • 290
    Simple bootstraping
  • 237
  • 139
  • 130
  • 84
  • 81
    Synced folders
  • 69
  • 51
  • 44
    Very flexible
  • 5
    Works well, can be replicated easily with other devs
  • 5
    Easy-to-share, easy-to-version dev configuration
  • 3
  • 3
    Just works
  • 2
    Quick way to get running
  • 1
    DRY - "Do Not Repeat Yourself"
  • 1
    Container Friendly
  • 1
    What is vagrant?
  • 1
    Good documentation

Sign up to add or upvote prosMake informed product decisions

Cons of LXD
Cons of Vagrant
    Be the first to leave a con
    • 2
      Can become v complex w prod. provisioner (Salt, etc.)
    • 2
      Multiple VMs quickly eat up disk space
    • 1
      Development environment that kills your battery

    Sign up to add or upvote consMake informed product decisions

    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 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.

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

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

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

    What tools integrate with LXD?
    What tools integrate with Vagrant?

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

    What are some alternatives to LXD and Vagrant?
    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
    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.
    KVM (for Kernel-based Virtual Machine) is a full virtualization solution for Linux on x86 hardware containing virtualization extensions (Intel VT or AMD-V).
    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.
    VirtualBox is a powerful x86 and AMD64/Intel64 virtualization product for enterprise as well as home use. Not only is VirtualBox an extremely feature rich, high performance product for enterprise customers, it is also the only professional solution that is freely available as Open Source Software under the terms of the GNU General Public License (GPL) version 2.
    See all alternatives