Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the moby runtime?

Currently learning docker and containerization, I get a little confused by the term of "moby runtime".

For my unterstanding, the whole docker has been split up in several libraries / tools / components allowing developers to build their own version of docker using the moby runtime.

Is this assumption correct?

What exactly is the relationship between moby runtime and e.g. the docker for desktop I download on my windows machine if I use the official docker page?

Why does e.g. Microsoft use the moby runtime to run some services like IoT Edge instead of the official docker build? Do they use their customized version of docker?

like image 665
Tobias von Falkenhayn Avatar asked Jul 04 '19 11:07

Tobias von Falkenhayn


2 Answers

Yes, I think your unstanding is correct.

From official web site:

Moby is an open framework created by Docker to assemble specialized container systems without reinventing the wheel. It provides a “lego set” of dozens of standard components and a framework for assembling them into custom platforms. At the core of Moby is a framework to assemble specialized container systems which provides: Components, Tools, Assemblies.

It also said:

Moby IS RECOMMENDED for anyone who wants to assemble a container-based system: Hackers who want to customize or patch their Docker build.

And next digram may make you even clear:

enter image description here

From this you can see, you could start your own project just like Docker CE, Docker EE based on moby project. And here is a good article I think explain it clearly. Also this from official guys response for some relationship.

like image 97
atline Avatar answered Oct 27 '22 19:10

atline


Moby is a bit of an overused name from Docker. In addition to being the name of one of their mascots (Moby is the blue whale you often see in the logos), Moby is:

  1. An upstream open source project that Docker has given to the community. This gives separation from the closed source portions of Docker and the parts with Docker's trademark attached. You can see these projects in their Github repositories. You can think about the Moby Project the same way you think of Fedora as the upstream for RedHat, Docker does most of their development in the Moby Project repos and packages specific releases from there with the Docker name that you see as Docker CE and Docker EE. Some projects may live here forever, but Docker also strives to move these further upstream to be managed by external organizations, e.g. containerd and notary have both been transitioned to the Linux Foundation.

  2. It is the repository name that was formerly docker/docker, now moved to moby/moby. This is the core of the docker engine.

  3. It is a virtual machine that is packaged using LinuxKit. This VM is a minimal environment to run docker containers, and well suited for running on desktop and embedded environments where you don't want to manage the VM itself.

The latter is most likely what you are thinking of by "Moby Runtime". A VM is needed to run Linux containers on a Windows or Mac environment (docker containers depend on a lot of kernel functionality that would not be easy to emulate). You can even see examples for building similar VM's in the LinuxKit examples. Inside of that VM is the same Docker CE engine that is installed natively on Linux host. And the VM itself is built and maintained by Docker.

like image 21
BMitch Avatar answered Oct 27 '22 19:10

BMitch