{"adoption": {"forks": 751, "observed_at": "2026-08-28T04:10:59.528853+00:00", "stars": 12668}, "canonical_url": "https://ross.abutalabs.com/products/bocker", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Docker implemented in around 100 lines of bash", "domain": ["developer-tools", "operating-systems"], "enriched": true, "function": ["container-runtime", "developer-tools", "cli"], "health_score": 20, "homepage": "https://www.p8952.info/", "language": "Shell", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "maintenance", "member_repos": ["p8952/bocker"], "name": "p8952/bocker", "platform": ["cli"], "pushed_at": "2017-12-09T14:16:38+00:00", "repo": "p8952/bocker", "stars": 12668, "tags": ["docker-clone", "bash", "educational", "namespaces", "cgroups", "minimal-implementation", "containers", "devops", "linux"], "topics": [], "urls": [], "use_cases": ["understand how docker works internally", "learn linux namespaces and cgroups", "run containers without installing docker", "teach container fundamentals", "minimal container runtime in bash", "study container isolation primitives"], "what_it_is": "Bocker is a minimal reimplementation of Docker in roughly 100 lines of bash, using Linux namespaces, cgroups, btrfs, and iptables to pull images and run isolated containers. It is primarily an educational demonstration of how container runtimes work under the hood.", "when_to_avoid": ["you need a production container runtime - use Docker, Podman, or containerd", "you need full Docker feature coverage like volumes, networking modes, or compose", "you can't dedicate a VM or btrfs setup, since bocker runs as root and modifies network/firewall config"], "when_to_choose": ["you want to read a tiny, readable codebase to learn container internals", "you need a toy container runtime for a VM or lab environment", "you're teaching or demoing how namespaces, cgroups, and network bridges enable containers"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/bocker", "repo": "p8952/bocker", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:59.528853+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:13:53.089328+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e81fd63a5a47d57a1b0a315647587d888bc4ee9beb228ae6a1ce251dc709ff0a", "fetched_at": "2026-08-28T04:10:59.528853+00:00", "kind": "readme", "missing": false, "url": "https://github.com/p8952/bocker"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:59.528853+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:13:53.089328+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e81fd63a5a47d57a1b0a315647587d888bc4ee9beb228ae6a1ce251dc709ff0a", "fetched_at": "2026-08-28T04:10:59.528853+00:00", "kind": "readme", "missing": false, "url": "https://github.com/p8952/bocker"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:13:53.089328+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e81fd63a5a47d57a1b0a315647587d888bc4ee9beb228ae6a1ce251dc709ff0a", "fetched_at": "2026-08-28T04:10:59.528853+00:00", "kind": "readme", "missing": false, "url": "https://github.com/p8952/bocker"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:10:59.528853+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:59.528853+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:59.528853+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:13:53.089328+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e81fd63a5a47d57a1b0a315647587d888bc4ee9beb228ae6a1ce251dc709ff0a", "fetched_at": "2026-08-28T04:10:59.528853+00:00", "kind": "readme", "missing": false, "url": "https://github.com/p8952/bocker"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:59.528853+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:59.528853+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:13:53.089328+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e81fd63a5a47d57a1b0a315647587d888bc4ee9beb228ae6a1ce251dc709ff0a", "fetched_at": "2026-08-28T04:10:59.528853+00:00", "kind": "readme", "missing": false, "url": "https://github.com/p8952/bocker"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:59.528853+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:59.528853+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:59.528853+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:13:53.089328+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e81fd63a5a47d57a1b0a315647587d888bc4ee9beb228ae6a1ce251dc709ff0a", "fetched_at": "2026-08-28T04:10:59.528853+00:00", "kind": "readme", "missing": false, "url": "https://github.com/p8952/bocker"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:59.528853+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:59.528853+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:13:53.089328+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e81fd63a5a47d57a1b0a315647587d888bc4ee9beb228ae6a1ce251dc709ff0a", "fetched_at": "2026-08-28T04:10:59.528853+00:00", "kind": "readme", "missing": false, "url": "https://github.com/p8952/bocker"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:13:53.089328+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e81fd63a5a47d57a1b0a315647587d888bc4ee9beb228ae6a1ce251dc709ff0a", "fetched_at": "2026-08-28T04:10:59.528853+00:00", "kind": "readme", "missing": false, "url": "https://github.com/p8952/bocker"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:13:53.089328+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e81fd63a5a47d57a1b0a315647587d888bc4ee9beb228ae6a1ce251dc709ff0a", "fetched_at": "2026-08-28T04:10:59.528853+00:00", "kind": "readme", "missing": false, "url": "https://github.com/p8952/bocker"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:13:53.089328+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e81fd63a5a47d57a1b0a315647587d888bc4ee9beb228ae6a1ce251dc709ff0a", "fetched_at": "2026-08-28T04:10:59.528853+00:00", "kind": "readme", "missing": false, "url": "https://github.com/p8952/bocker"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4068, "days_push": 3189, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}