{"adoption": {"forks": 192, "observed_at": "2026-08-28T04:05:14.119470+00:00", "stars": 1632}, "canonical_url": "https://ross.abutalabs.com/products/containers-the-hard-way", "card": {"archived": false, "artifact_type": "learning-resource", "description": "Learning about containers and how they work by creating them the hard way", "domain": ["operating-systems", "developer-tools", "tutorials"], "enriched": true, "function": ["container-runtime", "cli", "developer-tools"], "health_score": 20, "homepage": null, "language": "Go", "license": null, "license_family": "other", "maturity": "maintenance", "member_repos": ["shuveb/containers-the-hard-way"], "name": "shuveb/containers-the-hard-way", "platform": ["go", "cli"], "pushed_at": "2022-01-22T04:25:22+00:00", "repo": "shuveb/containers-the-hard-way", "stars": 1632, "tags": ["mini-docker", "namespaces", "cgroups", "educational", "containers-internals", "containers", "linux"], "topics": [], "urls": [], "use_cases": ["learn how containers work under the hood", "understand linux namespaces and cgroups", "see how docker is implemented with system calls", "study container image management and networking", "run a minimal container runtime from source", "teach container internals to others"], "what_it_is": "Gocker is a mini Docker implementation written in Go that recreates Docker's core functionality from scratch using Linux system calls like namespaces and cgroups. It is primarily an educational project for understanding how containers work at the Linux system call level.", "when_to_avoid": ["you need a production-ready container runtime", "you need full Docker feature coverage or orchestration", "you are not on Linux, since it relies on Linux-specific primitives", "you need an actively maintained or supported tool"], "when_to_choose": ["you want to deeply understand container internals at the syscall level", "you prefer readable Go source over shell-script alternatives like bocker", "you are teaching or learning operating system virtualization concepts"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/containers-the-hard-way", "repo": "shuveb/containers-the-hard-way", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:14.119470+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:47:48.161387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e3b813add508fcb6a1254d59ff75a65b89f1a76281beb73e1516beacd576ef87", "fetched_at": "2026-08-28T04:05:14.119470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shuveb/containers-the-hard-way"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:14.119470+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:47:48.161387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e3b813add508fcb6a1254d59ff75a65b89f1a76281beb73e1516beacd576ef87", "fetched_at": "2026-08-28T04:05:14.119470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shuveb/containers-the-hard-way"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:47:48.161387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e3b813add508fcb6a1254d59ff75a65b89f1a76281beb73e1516beacd576ef87", "fetched_at": "2026-08-28T04:05:14.119470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shuveb/containers-the-hard-way"}], "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:05:14.119470+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:14.119470+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:14.119470+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:47:48.161387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e3b813add508fcb6a1254d59ff75a65b89f1a76281beb73e1516beacd576ef87", "fetched_at": "2026-08-28T04:05:14.119470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shuveb/containers-the-hard-way"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:14.119470+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:14.119470+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:47:48.161387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e3b813add508fcb6a1254d59ff75a65b89f1a76281beb73e1516beacd576ef87", "fetched_at": "2026-08-28T04:05:14.119470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shuveb/containers-the-hard-way"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:14.119470+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:14.119470+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:14.119470+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:47:48.161387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e3b813add508fcb6a1254d59ff75a65b89f1a76281beb73e1516beacd576ef87", "fetched_at": "2026-08-28T04:05:14.119470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shuveb/containers-the-hard-way"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:14.119470+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:14.119470+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:47:48.161387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e3b813add508fcb6a1254d59ff75a65b89f1a76281beb73e1516beacd576ef87", "fetched_at": "2026-08-28T04:05:14.119470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shuveb/containers-the-hard-way"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:47:48.161387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e3b813add508fcb6a1254d59ff75a65b89f1a76281beb73e1516beacd576ef87", "fetched_at": "2026-08-28T04:05:14.119470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shuveb/containers-the-hard-way"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:47:48.161387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e3b813add508fcb6a1254d59ff75a65b89f1a76281beb73e1516beacd576ef87", "fetched_at": "2026-08-28T04:05:14.119470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shuveb/containers-the-hard-way"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:47:48.161387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e3b813add508fcb6a1254d59ff75a65b89f1a76281beb73e1516beacd576ef87", "fetched_at": "2026-08-28T04:05:14.119470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shuveb/containers-the-hard-way"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2292, "days_push": 1684, "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}}