π§ How to Debug containerd Like a Pro
containerd is fast and reliable, but when something goes wrong, it helps to know how to inspect its inner workings. Unlike Docker, containerd is more modular and transparent, which gives you greater control during troubleshooting β if you know where to look.
In this guide, you’ll learn practical debugging techniques for containerd. Weβll cover logs, runtime introspection, active tasks, snapshots, namespaces, and image metadata so you can diagnose issues with clarity and confidence.
For more deep-dive strategies and expert-level tools, check out containerd Power Hacks β a complete PDF guide with real-world workflows, performance tuning, and advanced containerd internals.
π§ Start with containerd Logs
Your first stop when debugging any containerd issue is the system logs. Use journalctl
to view live or historical logs for the containerd service:
sudo journalctl -u containerd -f
To review logs from earlier in the day:
sudo journalctl -u containerd --since "6 hours ago"
Watch for errors related to image pulls, namespace issues, failed mounts, or runtime errors.
π§ͺ List Active Tasks and Containers
containerd separates running tasks from containers. A container definition may exist, but without a task, it is not running.
To list all containers:
sudo ctr --namespace default containers list
To list running tasks:
sudo ctr --namespace default tasks list
If your container exists but is not listed as a task, it likely crashed or never started.
π View Task Details
To debug a specific running task, inspect its metadata:
sudo ctr --namespace default task info <task-id>
You will see its process ID, runtime, snapshot, labels, and container association. If a container fails during startup, use:
sudo ctr task metrics <task-id>
This may show CPU or memory limits that are being exceeded.
π Check Snapshots
containerd manages container filesystems using snapshots. These are similar to layers and are often where file system errors occur.
To list all snapshots:
sudo ctr --namespace default snapshots list
Each snapshot has a parent-child relationship and is tied to a containerβs root filesystem. If your container fails to mount, inspect its snapshot. You can remove a problematic snapshot with:
sudo ctr --namespace default snapshots rm <snapshot-name>
π Verify Namespace Isolation
containerd stores containers, images, snapshots, and tasks per namespace. If you forget to specify the right namespace, it may look like things are missing.
Check current namespaces:
sudo ctr namespaces list
Then list containers in a specific namespace:
sudo ctr --namespace myspace containers list
To avoid confusion, always work within the correct namespace for your environment or script.
π¦ Inspect Image Metadata
When an image pull fails or seems corrupted, check the metadata:
sudo ctr --namespace default image inspect docker.io/library/alpine:latest
This reveals layer digests, content descriptors, and configuration data. If the image cache is stale or broken, you can remove and re-pull the image:
sudo ctr --namespace default image rm docker.io/library/alpine:latest
sudo ctr --namespace default image pull docker.io/library/alpine:latest
π§° Enable Debug-Level Logs
For persistent debugging, enable detailed logs in the containerd configuration.
Edit /etc/containerd/config.toml
and set:
[debug]
level = "debug"
Then restart containerd:
sudo systemctl restart containerd
After that, logs will include additional diagnostic information, including pull retries, layer mounts, and runtime errors.
π Conclusion
Debugging containerd may seem low-level at first, but it quickly becomes intuitive when you learn where its components live and how to inspect them. With access to logs, tasks, snapshots, and namespaces, you can gain a complete picture of what is happening under the hood.
These tools will help you resolve container startup failures, image inconsistencies, or runtime errors efficiently.
For a full set of debugging playbooks, hidden features, and performance tricks, download containerd Power Hacks – Hidden Features, Debugging Flows, and Real-World Performance Tuning β a PDF guide built for engineers running containerd in production.