Skip to main content

Your submission was sent successfully! Close

Thank you for signing up for our newsletter!
In these regular emails you will find the latest updates from Canonical and upcoming events where you can meet our team.Close

Thank you for contacting our team. We will be in touch shortly.Close

  1. Blog
  2. Article

Vergil Yotov
on 17 May 2023

Docker vs Snaps: a side by side comparison


The Docker project was initiated by dotCloud, a platform-as-a-service (PaaS) company that created Docker to run their internal infrastructure. Slowly, Docker became more successful than any of their other products, so dotCloud rebranded as Docker Inc. Docker provides easy-to-use tooling and grew into an entire ecosystem for container management. Many developers have learned to use it as part of their toolkit for packaging and distributing applications to the cloud, or for development and testing stages more broadly. 

Snaps were introduced by Canonical, the publisher of Ubuntu, as a way to package and distribute Linux applications. There was a growing need to ease the deployment of applications that run across different Linux flavours, versions and even types of compute. Snaps improved the overall system security and the software update lifecycle, including infrastructure for over-the-air updates and automatic rollbacks. The idea behind snaps is to decouple the Linux application from the operating system it runs on, while still providing secure access to host resources through dedicated interfaces and reusing as much as it’s practical from a minimal stable release of Ubuntu.  

In sum, while Docker containers were mostly focused on covering the cloud use case and developer workflow, snaps aimed to reinvent the way Linux applications are packaged and distributed.

This resulted in Docker providing a quick and efficient way to containerise cloud services, while snaps became great for the distribution of Linux applications. 

As far as Linux applications are concerned, both could be packaged in either a Docker image or a snap. They both run natively on Linux and require a compatibility layer to run on Windows or macOS.

The infographic below provides a quick side by side comparison of the two technologies, their purpose and essential features for IoT deployments. To learn more about this topic, you can also download our whitepaper on considerations for using Docker containers in IoT and learn how to migrate your docker project to snaps.

Related posts


Rhys Knipe
12 June 2024

Space pioneers: Lonestar gears up to create a data centre on the Moon

Canonical announcements Article

Why establish a data centre on the Moon? Find out in our blog. ...


Holly Hall
15 January 2024

Managing software in complex network environments: the Snap Store Proxy

Internet of Things Article

As enterprises grapple with the evolving landscape of security threats, the need to safeguard internal networks from the broader internet is increasingly important. In environments with restricted internet access, it can be difficult to manage software updates in an easy, reliable way. When managing devices in the field, change management ...


gbeuzeboc
25 September 2024

TurtleBot3 OpenCR firmware update from a snap

IoT Article

The TurtleBot3 robot is a standard platform robot in the ROS community, and it’s a reference that Canonical knows well, since we’ve used it in our tutorials. As a matter of fact, we use it to demonstrate some of our work, such as distributing a ROS stack through snaps. This robot embeds two boards, a ...