Since Docker popularized software containers four years ago, a whole ecosystem around containerization has grown up and experienced two distinct growth stages in this limited period of time. In both phases, the models used to produce container systems evolve to accommodate the number and needs of user communities, projects, and a growing ecosystem of contributors.
The Moby project is a new open source project designed to advance the software containerization movement and help the ecosystem take containers mainstream. It provides a library of components, a framework for assembling those components into a system based on custom containers, and a place for all container enthusiasts to experiment and exchange ideas.
Here’s a look back at how we got here. Between 2013 and 2014, pioneers began using containers and collaborating on a large open source library (Docker and other projects) to help these tools mature.
Containers were then scaled up in the production environment of native cloud applications in 2015-2016. During this phase, supported by hundreds of ecosystem projects and thousands of contributors, the user community rapidly grew to support thousands of deployments. It is in this phase that Docker transforms the production model into an open component-based solution. In this way, we can increase the surface area for both innovation and collaboration.
New standalone Docker component projects that help grow partner ecosystems and user communities have sprung up. During this time, we stripped components from the Docker code base and quickly innovated so that system makers could reuse them independently when building their own container systems, such as RUNc, HyperKit, VPNKit, SwarmKit, InfraKit, Containerd, and so on.
At the forefront of the container wave, one of the emerging trends we saw in 2017 is that containers are becoming mainstream, spreading across all types of computing: servers, data centers, cloud services, desktops, iot, and mobile devices; Every industry and vertical: finance, healthcare, government, tourism, manufacturing; And each use case: advanced Web applications, traditional server applications, machine learning, industrial control systems, robots. What many new entrants in the container ecosystem have in common is that they build systems specific to a particular infrastructure, industry, or use case.
As a company, Docker uses open source as an innovation laboratory to collaborate with the entire ecosystem. The success of Docker is inextricably linked to the success of the container ecosystem: as long as the ecosystem succeeds, we succeed. So we’ve been planning the next phase of container ecosystem growth: what production environment model can help us extend the container ecosystem to fulfill the promise of container mainstreaming?
In the last year, our clients have been looking for Docker solutions on platforms other than Linux: Mac and Windows desktop, Windows Server, and cloud platforms like Amazon AWS, Microsoft Azure, or Google Cloud, and we’ve created multiple versions of Docker for those platforms. In order for these particular releases to be built and delivered in a relatively short period of time, in a small team, in a scalable way, without having to reinvent the wheel, it was clear that we needed a new approach. Borrowing an idea from the automotive industry to build radically different vehicles by assembling reusable components, we asked our teams to collaborate not only on components, but also on assembly.
We think the best way to extend the container ecosystem to the next level, and thus bring containers into the mainstream, is to collaborate on assembly at the ecosystem level.
To enable this new level of collaboration, we announced the Moby Project, a new open source project to advance the containerization movement. It offers a “Lego combo” of several components, as well as a place for all container enthusiasts to experiment and exchange ideas. Think of Moby as the lego Club for container systems.
Moby consists of the following components:
-
A containerized backend component library (e.g., a low-level builder, logging tools, data volume management, networking, image management, Containerd, SwarmKit…)
-
A framework for assembling these components into a stand-alone container system and assisting in building, testing, and deploying these artifacts.
-
A reference assembly called Moby Origin, which is the open foundation for the Docker container system, is also an example of a container system that uses different components from the Moby library or other projects.
Moby is designed for system builders who want to build their own container-based systems, not application developers who can use Docker or other container platforms. Moby participants can choose from a component library derived from Docker, or they can choose to “bring Your Own Components (BYOC)” packaged into containers with the option to mix and match all components to create a custom container system.
Docker uses the Moby project as an open r&d laboratory for experimentation, developing new components, and collaborating with the ecosystem on future container technologies. All of our open source collaboration will be migrated to the Moby project.
Work with us to mainstream the software container through collaboration on components and assembly and take our ecosystem and user community to the next level of growth.