Docker is a free, open source cloud infrastructure management project written in Go and released under Apache-2.0. It has 72,234 GitHub stars, 19,342 forks and 3,902 open issues, and was last pushed 5 hours ago. On this registry it ranks #2 of 76 tracked projects in Cloud Infrastructure Management, with 5 head-to-head comparisons available. It gained 84 stars over the last 30 tracked days.

What is Docker?

Docker, published here as the Moby Project, is the open-source collection of container toolkit components and the framework for assembling them into custom container-based systems, built for engineers, integrators and enthusiasts who want to modify, hack and build on container code rather than buy a commercially supported product.

What it is

Moby is an open-source project created by Docker to enable and accelerate software containerization. It lives in the container ecosystem and is written in Go, licensed under Apache-2.0, and maintained at the moby/moby repository with a project home at mobyproject.org. Its README describes it as a "Lego set" of toolkit components, the framework for assembling those components into custom container-based systems, and a place for container enthusiasts and professionals to experiment and exchange ideas. The components include container build tools, a container registry, orchestration tools and a runtime, all intended as building blocks that can be used alongside other tools and projects.

The concrete problem it solves is the gap between a fixed container product and the pieces needed to assemble one. Moby provides modular components with well-defined functions and APIs that work together, and its architecture keeps most of those components swappable for different implementations. It is also the upstream for the Docker product itself, while other projects are encouraged to use it as upstream and to reuse its components in diverse ways. For Go integrators, it additionally replaces a deprecated dependency: starting with Docker v29, released in November 2025, the Go module github.com/docker/docker is deprecated and no longer updated, and the supported public modules are now github.com/moby/moby/client and github.com/moby/moby/api.

Key capabilities

  • Assembles container-based systems from toolkit components covering container build tools, a container registry, orchestration tools and a runtime.
  • Keeps a modular architecture in which most components can be swapped for different implementations, described as "batteries included but swappable".
  • Provides the Go client for the Docker Engine API as github.com/moby/moby/client.
  • Provides API types shared between client and server as github.com/moby/moby/api.
  • Ships the root module github.com/moby/moby/v2, which produces binaries only and is not intended to be imported as a Go library.
  • Tags Docker Engine releases with a docker- prefix, for example docker-v29.0.0 for Docker Engine 29.0.0.
  • Applies secure defaults without compromising usability, with APIs aimed at developers building powerful tools rather than at end users.

Who uses it and how

  • Engineers, integrators and enthusiasts who want to modify, hack, fix, experiment, invent and build systems based on containers.
  • Docker itself, which uses Moby as the upstream for the Docker product.
  • External maintainers and contributors working on open source code, fixing bugs and making the code more useful.
  • Other projects that reuse Moby components in diverse ways as their own upstream, with all such uses treated the same way.
  • Developers building Go tooling around the Docker Engine API, who should depend on github.com/moby/moby/client and github.com/moby/moby/api rather than importing the root module.

Getting started

The entry point is the project home at mobyproject.org, and work starts from the root module github.com/moby/moby/v2, which is the codebase for building container engines based on Moby and produces binaries rather than a library to import. Releases built from that module are tagged with the docker- prefix, such as docker-v29.0.0.

How it compares

The README names Docker Desktop and Mirantis Container Runtime as the appropriate products for customers who want enterprise or commercial support, whereas Moby releases are supported by maintainers, community and users on a best-efforts basis only. Moby is therefore the open-source upstream for those commercial offerings rather than a supported product in its own right, and it explicitly is not the place to file support or feature requests for Docker products. Its Apache-2.0 licence and open contribution model contrast with the commercially supported route those two products represent.

When to use it — and when not to

Choose Moby if you intend to assemble, experiment with or contribute to container systems and accept operating the stack yourself, including whichever build, registry, orchestration and runtime components you select. Do not choose it if you need commercially supported software, vendor-backed support channels, or a stable Go library: the root github.com/moby/moby/v2 module carries no API stability guarantees, the old github.com/docker/docker module is deprecated and frozen as of Docker v29, and support is best-efforts. Go integrators should plan their dependency migration to github.com/moby/moby/client and github.com/moby/moby/api before writing new code against the engine API.

project readme (upstream, from github) — read inline

The Moby Project

PkgGoDev GitHub License OpenSSF Scorecard OpenSSF Best Practices

Moby Project logo

Moby is an open-source project created by Docker to enable and accelerate software containerization.

It provides a "Lego set" of toolkit components, the framework for assembling them into custom container-based systems, and a place for all container enthusiasts and professionals to experiment and exchange ideas. Components include container build tools, a container registry, orchestration tools, a runtime and more, and these can be used as building blocks in conjunction with other tools and projects.

Principles

Moby is an open project guided by strong principles, aiming to be modular, flexible and without too strong an opinion on user experience. It is open to the community to help set its direction.

  • Modular: the project includes lots of components that have well-defined functions and APIs that work together.
  • Batteries included but swappable: Moby includes enough components to build fully featured container systems, but its modular architecture ensures that most of the components can be swapped by different implementations.
  • Usable security: Moby provides secure defaults without compromising usability.
  • Developer focused: The APIs are intended to be functional and useful to build powerful tools. They are not necessarily intended as end user tools but as components aimed at developers. Documentation and UX is aimed at developers not end users.

Audience

The Moby Project is intended for engineers, integrators and enthusiasts looking to modify, hack, fix, experiment, invent and build systems based on containers. It is not for people looking for a commercially supported system, but for people who want to work and learn with open source code.

Relationship with Docker

The components and tools in the Moby Project are initially the open source components that Docker and the community have built for the Docker Project. New projects can be added if they fit with the community goals. Docker is committed to using Moby as the upstream for the Docker Product. However, other projects are also encouraged to use Moby as an upstream, and to reuse the components in diverse ways, and all these uses will be treated in the same way. External maintainers and contributors are welcomed.

The Moby project is not intended as a location for support or feature requests for Docker products, but as a place for contributors to work on open source code, fix bugs, and make the code more useful. The releases are supported by the maintainers, community and users, on a best efforts basis only. For customers who want enterprise or commercial support, Docker Desktop and Mirantis Container Runtime are the appropriate products for these use cases.

Go modules

[!IMPORTANT] Starting with Docker v29 (released November 2025), the Go module github.com/docker/docker is deprecated and won't be updated.

The supported public Go modules are:

Module Description
github.com/moby/moby/client Go client for the Docker Engine API
github.com/moby/moby/api API types shared between client and server

The root module github.com/moby/moby/v2 is the codebase for building container engines based on Moby (such as Docker Engine). It produces binaries only - it is not intended to be imported as a Go library and has no API stability guarantees.

Release tags

Docker Engine releases are tagged with a docker- prefix (e.g. docker-v29.0.0 for Docker Engine 29.0.0).

These tags are only used to build the Docker Engine binary from the root module - they must not be consumed via go get.

The client and api modules are versioned independently with their own tags (e.g. client/v1.x.x, api/v1.x.x).

Migrating from github.com/docker/docker

Replace the old import paths:

- import "github.com/docker/docker/client"
+ import "github.com/moby/moby/client"

- import "github.com/docker/docker/api/types"
+ import "github.com/moby/moby/api/types"

Note that v29 includes many breaking API changes (option structs, renamed methods, moved types). See the v29.0.0 release notes for the full list of Go SDK changes.


Legal

Brought to you courtesy of our legal counsel. For more context, please see the NOTICE document in this repo.

Use and transfer of Moby may be subject to certain restrictions by the United States and other governments.

It is your responsibility to ensure that your use and/or transfer does not violate applicable laws.

For more information, please see https://www.bis.doc.gov

Licensing

Moby is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Frequently asked questions

Is Docker free to use?

Docker is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Docker do?

The Moby Project - a collaborative project for the container ecosystem to assemble container-based systems

What is Docker written in?

Docker is primarily written in Go. Its source is publicly available at https://github.com/moby/moby, and it has 72,234 GitHub stars.