Demystifying the Relationship Between Moby & Docker

Why https://github.com/docker/docker been redirected to moby/moby?  Why Docker created the Moby project? Is Docker renamed to Moby? What it actually mean when we say Moby is going to be upstream project? – I have been reading a lot of such queries in twitter and open forums even after dozens of blogs are available to clarify the confusion. Still confused about the relationship between Moby  and Docker? –  Under this blog, I will try to clarify the relationship between “the Moby project” & “Docker product” through popular existing analogy -Fedora, RHEL & CentOS.

 

Relationship

                   ** the only difference it holds is of Docker CE which comes before Docker EE as compared to RHEL which comes before CentOS.

Fedora is an operating system based on Linux kernel and GNU programs. It is purely a community driven project and sponsored by Red Hat. With an estimation of over 1.2 million users,  it is actually a playground for new functionality as it primarily  focus on quick releases of new features. Red Hat Enterprise Linux branches its releases from versions of Fedora. The key reason of birth of Fedora Linux was that Fedora’s repository development would be collaborative with the global volunteer community. Fedora Linux was eventually absorbed into the Fedora Project, carrying with it this collaborative approach.

RHEL (Red Hat Enteprise Linux) is  a Linux distribution developed and run by Red Hat and targeted toward the commercial market. RHEL is a downstream product and based on Fedora. 

CentOS  is very close to being RHEL without the branding and support. It is a spinoff of RHEL. It is based on the same code base.  Again, it is a community driven and a downstream product.

Let us consider this analogy and try to understand the relationship between Moby, Docker Community Edition & Docker Enterprise Edition.

 ” Moby is a project & Docker is a product”

 

Moby_1

A Birth of Moby Project – Why?

In the last 2 years, Docker experienced exponential growth . With around 6 billions Docker images pull (compared to 100 million two years back) and thousands of contributors being added month after month, Docker project saw tremendous community engagement. With such exponentially growing community, the boundaries between community and product started to look “blur” as the community was confused if they are contributing to product or the project. To bring the clarification around this debate, Docker finally decided to break its monolithic model into smaller open source components(includes containerd, libnetwork, swarmkit and LinuxKit) and hence the birth of Moby project.

As an analogy, think of Moby as community-driven Fedora project. Moby is an open-source project created by Docker to advance the software containerization movement. It is an upstream project  & perfectly a place for all container enthusiasts to experiment and exchange ideas. As Solomon rightly said “Docker uses the Moby Project as an open R&D lab”.

 

 

moby

 

Think of Docker Community Edition (CE) as CentOS product. As it name suggest, it will again be community-driven, free to use and distribute. Docker CE, as a product, is is ideal for developers and small teams looking to get started with Docker and experimenting with container-based apps. Docker CE is integrated and optimized to the infrastructure so you can maintain a native app experience while getting started with Docker. Build the first container, share with team members and automate the dev pipeline, all with Docker Community Edition.

Docker Enterprise Edition(EE) would be a good analogy to RHEL. It is based on Docker CE and hence, a downstream product. It is officially driven by Docker Inc.

Moby Vs Docker – Q/A

Que:1 > Why docker/docker renamed to moby/moby?

Docker is transitioning all of its open source collaborations to the Moby project going forward and hence it is getting redirected. Docker the product will be assembled from components that are packaged by the Moby project. As the Docker Engine continues to be split up into more components the Moby project will also be the home for those components until a more appropriate location is found.

Que:2 > What is Docker – a project or a product?

Docker is, and will remain, an open source product that lets you build, ship and run containers. It is staying exactly the same from a user’s perspective. Users can download Docker from the docker.com website.

Que:3 > To  what set of users Moby is NOT recommended?

Moby is NOT recommended for application developers looking for an easy way to run their applications in containers.(use Docker CE instead), to enterprise IT and development teams looking for a ready-to-use, commercially supported container platform.(use Docker EE instead) & to anyone curious about containers and looking for an easy way to learn.(use docker.com website instead).

Que:4 > To what set of users Moby is recommended?

Moby is recommended for anyone who wants to assemble a container-based system. This includes hackers, system engineers, infrastructure provides, container enthusiast, open source developers etc.

Que:5 > Will Moby be community-driven going forward?

Yes, of-course. Just like other open source projects, the Moby Project will always be a community-run project. Docker Inc. might plan to donate it to Linux Foundation hopefully.(similar to what they did it for containerd – donated to CNCF).

Que:6 > What is Moby project made up of?

All Moby components are containers, so creating new components is as easy as building a new OCI-compatible container. However, at the core of Moby is a framework to assemble specialized container systems. It provides:

  • A library of containerized components for all vital aspects of a container system: OS, container runtime, orchestration, infrastructure management, networking, storage, security, build, image distribution, etc.
  • Tools to assemble the components into runnable artifacts for a variety of platforms and architectures: bare metal (both x86 and Arm); executables for Linux, Mac and Windows; VM images for popular cloud and virtualization providers.
  • A set of reference assemblies which can be used as-is, modified, or used as inspiration to create your own.

Que:7 > Does Moby uses containerd?

Yes, you are right. Moby uses containerd as the default container runtime.

Que:8 > What does Moby tool do? How is it related to LinuxKit?

The Moby project provides a command-line tool called moby which assembles components. Currently it assembles bootable OS images, but soon it will also be used by Docker for assembling Docker out of components, many of which will be independent projects.

If Moby is used to build ISO images, LinuxKit takes a charge of pushing it and running on diversified platforms.

Did you find this blog helpful? Are you planning to explore Moby? Feel free to share your experience. Get in touch @ajeetsraina

If you are looking out for contribution, join me at Docker Community Slack Channel.

Track The Moby Project @ https://github.com/moby/moby