moby/moby
Fun facts
Light trivia from the Moby codebase.
The friendly random names
docker run without --name produces names like adoring_curie or quirky_einstein. The generator lives in internal/namesgenerator/. The list pairs an adjective with the surname of a famous scientist or inventor. There's a single hard-coded easter egg: the name boring_wozniak is forbidden, with the comment "Steve Wozniak is not boring".
Why "Moby"?
The project's first name was Docker. When it was renamed in April 2017, the new name Moby came from the Moby Dock mascot — the whale carrying containers. The README's "Lego set of toolkit components" framing dates from this rename.
The longest file
integration-cli/docker_cli_build_test.go is 6,245 lines of test code. It's part of the deprecated integration-cli/ suite that hasn't accepted new tests since 2018. Several maintainers have joked about porting it; it remains.
The longest non-test, non-generated Go file is daemon/daemon.go at 1,921 lines — the Daemon god-object the ROADMAP.md explicitly calls out as a refactor target. The longest single libnetwork file is drivers/bridge/bridge_linux.go at 1,920 lines, almost dead even.
SIGPIPE is ignored on purpose
The very first thing dockerd's main does after reexec.Init() is signal.Ignore(syscall.SIGPIPE). The inline comment in cmd/dockerd/main.go says:
Ignore SIGPIPE events. These are generated by systemd when journald is restarted while the docker daemon is not restarted and also running under systemd.
The fix references issue #19728 — a bug from early 2016 that's still relevant a decade later.
Plain-text errors for ancient clients
When a client connects with API version < 1.24, the daemon serves the error response as plain text instead of JSON, even though the JSON path is the rest of the API's contract. The comment in daemon/server/server.go explains:
While we no longer support API versions older than 1.24, a client may try to connect using an older version and expect a plain-text error instead of a JSON error.
It's a kindness toward decade-old binaries.
HTTP 499 in the source
The daemon emits HTTP 499 Client Closed Request when the client disconnects mid-request. 499 is a non-standard NGINX-ism. The Moby code introduces it as a constant with three sources of justification (NGINX docs, Cloudflare docs, and the inline reasoning that "the client will typically not observe this status").
pkg/ is named after Camlistore
pkg/README.md admits the directory is "named after the same directory in the camlistore project. Since Brad is a core Go maintainer, we thought it made sense to copy his methods for organizing Go code :) Thanks Brad!". Camlistore (now Perkeep) was a personal-storage project by Brad Fitzpatrick. The convention stuck across an entire industry.
Free-form contributor lists
MAINTAINERS is a plain TSV-like list of GitHub IDs and names — committers above, reviewers below — with single-line comments. This is the actual file CI consults. There's no JSON, no GitHub team API call, just a text file in the repo root.
How old is the bridge?
The bridge network driver originated before libnetwork; when libnetwork was extracted in 2015, the bridge driver moved with it. When libnetwork was reabsorbed into the daemon tree in July 2025 (commit Move libnetwork to daemon/libnetwork), bridge_linux.go came back to live in daemon/. It's the single Moby file that has crossed both directions of a repo split.
The inception
The very first commit, a27b4b8cb8 from 2013-01-18, is by Andrea Luzzardi. The next two commits the following day are from Solomon Hykes — the project's original lead. Both are still in the canonical AUTHORS list (which is regenerated from git log and .mailmap). The repo has accumulated ~2,715 unique human authors since then.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.