π ~1 min read
Table of contents
Symptom & Impact
Containers fail to launch because dockerd cannot initialize cgroup subsystem properly.
Environment & Reproduction
Frequent when Docker, containerd, and kubelet use conflicting cgroup driver settings.
Root Cause Analysis
Runtime stack mixes systemd and cgroupfs drivers, causing startup validation failures.
Quick Triage
Inspect daemon logs and compare runtime config across Docker/containerd/kubelet.
Step-by-Step Diagnosis
Run: sudo journalctl -u docker -n 200 –no-pager; docker info 2>/dev/null | grep -i cgroup; cat /etc/docker/daemon.json; cat /etc/containerd/config.toml | grep -i SystemdCgroup.

Solution – Primary Fix
Set Docker exec-opts to native.cgroupdriver=systemd in /etc/docker/daemon.json, align containerd, then sudo systemctl restart containerd docker.
Still having issues? Our IT Solutions & Services team can diagnose and resolve this for you. Get in touch for a free consultation.

Solution – Alternative Approaches
Migrate fully to containerd-managed workloads and remove overlapping Docker runtime dependencies.
Verification & Acceptance Criteria
docker info reports expected cgroup driver and containers start successfully.
Rollback Plan
Restore previous daemon.json and containerd config backups if workloads fail after change.
Prevention & Hardening
Standardize runtime templates and validate cgroup settings during provisioning pipelines.
Related Errors & Cross-Refs
Related to OCI runtime create failed and kubelet runtime network not ready states.
Related tutorial: View the step-by-step tutorial for debian-12.
View all debian-12 tutorials on the Tutorials Hub β
Browse all common problems & solutions on the Tutorials Hub.
References & Further Reading
Docker and containerd Debian installation docs and cgroup v2 migration notes.
Need Expert Help?
If you cannot resolve this yourself, our team offers hands-on Server Management, Managed IT Services, and flexible Support Plans. Contact us today β we respond within one business day.