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


+ 1

+ 1
Add tool

Docker vs Yocto: What are the differences?


Docker and Yocto are both popular tools in the field of software development and deployment. While they serve different purposes, they have some key differences that set them apart.

  1. Packaging and Isolation: Docker is a containerization platform that allows developers to package their applications and dependencies into a lightweight, isolated environment called a container. It provides a consistent and portable runtime environment, ensuring that the application runs consistently regardless of the underlying system. On the other hand, Yocto is a build system that allows developers to create customized Linux distributions for embedded systems. It focuses on building complete operating systems for specific hardware platforms rather than isolating applications.

  2. Flexibility and Customizability: Docker excels in providing flexibility and customizability. It allows developers to choose from a wide range of base images and easily install additional software packages inside the container as needed. It supports the use of container orchestration tools like Kubernetes, making it easy to manage and scale containers in a distributed environment. Yocto, on the other hand, offers a high level of customizability but requires more manual configuration. It allows developers to define the target hardware, select the software components to include, and configure various aspects of the operating system, providing fine-grained control over the final image.

  3. Layered Approach: Docker uses a layered approach to build and manage containers. Each container is composed of multiple layers, with each layer representing a change to the file system. This allows for efficient use of disk space, as multiple containers can share common base layers. Yocto also employs a layered approach, but at a different level. It allows developers to create a layered structure for the entire Linux distribution, enabling modularity and easy reusability of components. This promotes efficient development, maintenance, and customization of the embedded Linux system.

  4. Target Audience: Docker is primarily targeted towards developers and DevOps professionals who need to package, deploy, and run applications in a consistent manner across different environments. It abstracts away the underlying infrastructure and provides a high level of portability. Yocto, on the other hand, is designed for embedded systems developers who need to build custom Linux distributions for specific hardware platforms. It allows for fine-tuning and optimization of the operating system, making it suitable for resource-constrained environments.

  5. Development Workflow: Docker focuses on simplifying the development workflow by providing easy-to-use tools for building, distributing, and running containers. It promotes a "build once, run anywhere" approach, where containers can be built locally and then deployed to any system that supports Docker. Yocto, on the other hand, requires more upfront configuration and setup. It provides a set of tools for building a custom Linux distribution from source code, which involves defining the hardware platform, software components, and build configurations. This makes it more suitable for long-term and large-scale development projects.

  6. Community and Ecosystem: Docker has a large and active community, with a wide range of pre-built images available on Docker Hub. It has a rich ecosystem of tools and services that integrate well with Docker, such as container orchestration platforms, continuous integration/delivery systems, and monitoring/logging solutions. Yocto also has a strong community, but it is more specialized towards embedded systems development. It provides a collection of recipes and layers that can be shared and reused among developers building embedded Linux systems.

In summary, Docker and Yocto are both powerful tools in their respective domains. Docker focuses on containerization and simplifying the deployment of applications, while Yocto emphasizes building customized Linux distributions for embedded systems. However, Docker provides more flexibility, layering capabilities, and a broader target audience, while Yocto offers fine-grained control, customizability, and a specialized ecosystem for embedded systems development.

Decisions about Docker and Yocto
Florian Sager
IT DevOp at Agitos GmbH · | 3 upvotes · 426.3K 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 Docker
Pros of Yocto
  • 823
    Rapid integration and build up
  • 691
  • 521
    Open source
  • 505
    Testa­bil­i­ty and re­pro­ducibil­i­ty
  • 460
  • 218
  • 185
  • 106
    Upgrading / down­grad­ing / ap­pli­ca­tion versions
  • 88
  • 85
    Private paas environments
  • 34
  • 26
    Limit resource usage
  • 17
    Game changer
  • 16
    I love the way docker has changed virtualization
  • 14
  • 12
  • 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
  • 0
    Be the first to leave a pro

    Sign up to add or upvote prosMake informed product decisions

    Cons of Docker
    Cons of Yocto
    • 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

      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 Yocto?

      It is an open source collaboration project that helps developers create custom Linux-based systems regardless of the hardware architecture. It provides a flexible set of tools and a space where embedded developers worldwide can share technologies, software stacks, configurations, and best practices that can be used to create tailored Linux images for embedded and IOT devices, or anywhere a customized Linux OS is needed.

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

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

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

      What tools integrate with Docker?
      What tools integrate with Yocto?

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

      Blog Posts

      Jul 9 2019 at 7:22PM

      Blue Medora

      DockerPostgreSQLNew Relic+8
      DockerAmazon EC2Scala+8
      What are some alternatives to Docker and Yocto?
      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.
      Rocket is a cli for running App Containers. The goal of rocket is to be composable, secure, and fast.
      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 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.
      See all alternatives