A reverse-engineering CLI tool that analyzes Docker container networks and exports connections in multiple formats.
Decompose is a reverse-engineering tool for Docker environments that extracts and visualizes network connections between containers. It solves the problem of understanding complex, undocumented Dockerized systems by analyzing live connections and exporting them in multiple formats like Graphviz, Structurizr DSL, and JSON. It helps users map out container interactions, identify dependencies, and document system architecture.
DevOps engineers, SREs, and developers working with large or legacy Docker deployments who need to visualize network topologies, audit connections, or document system architecture without existing schemas.
Developers choose Decompose for its speed, flexibility in output formats, and ability to handle large-scale Docker environments. Its unique selling point is the combination of deep container introspection, auto-clusterization, and support for multiple visualization and documentation formats in a single, static binary.
Reverse-engineering tool for docker environments
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Exports to Graphviz DOT, Structurizr DSL, Compose YAML, PlantUML, JSON, CSV, and more, enabling flexible integration with visualization and documentation tools, as listed in the README's output formats.
Scans large environments quickly—e.g., 470 containers with 4000 connections in around 5 seconds—making it efficient for big, legacy Docker deployments, as highlighted in the features section.
In deep mode, collects connections between processes inside containers, providing granular insights beyond container-level networking, which is a key feature for detailed analysis.
Offers auto-clusterization based on graph topology or user-defined rules using expr DSL, simplifying complex network diagrams, as demonstrated in the clusterization examples.
Full functionality, including unix-sockets and fast scanning via nsenter, requires Linux root access; non-root or non-Linux systems rely on fallback strategies that may fail if netstat is missing in containers.
The generated Compose YAML is not production-ready—it can lack crucial information or contain cycles, and the README explicitly states it's mainly for system overview rather than direct use.
Only captures established and listen connections, missing other TCP states like SYN_SENT or TIME_WAIT, which limits comprehensive network analysis for some use cases, as noted in known limitations.